titleBarにsegmentedControlを備えたアプリがあります。これは、3つのナビゲーションコントローラーを切り替えるために使用されます。新しいappearanceプロキシメソッドを使用して、このsegmentedControlのスタイルを設定しています(以下のコード)。しかし、私には理解できないある種のバグがあるようです。ナビゲーションコントローラーの1つに飛び込んでから、ルートに戻ると表示されます(これにより、セグメント化されたコントロールが再びトップバーに表示されます)。それが起こると、スクリーンショットで見ることができるように、仕切りのグラフィックが台無しになります(最初のものはそれがどのように見えるべきかを示しています)。
誰かが似たようなものに遭遇し、それを修正する方法を知っていますか?
外観を設定するための私のコードは次のとおりです。
UIImage *segmentSelected = [[UIImage imageNamed:@"sel"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
UIImage *segmentUnselected = [[UIImage imageNamed:@"uns"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 3, 0, 3)];
UIImage *segmentSelectedUnselected = [[UIImage imageNamed:@"sel-uns"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
UIImage *segUnselectedSelected = [[UIImage imageNamed:@"uns-sel"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
UIImage *segmentUnselectedUnselected = [[UIImage imageNamed:@"uns-uns"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setDividerImage:segmentUnselectedUnselected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setDividerImage:segmentSelectedUnselected forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setDividerImage:segUnselectedSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setContentPositionAdjustment:UIOffsetMake(8, 0) forSegmentType:UISegmentedControlSegmentLeft barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil]
setContentPositionAdjustment:UIOffsetMake(-8, 0) forSegmentType:UISegmentedControlSegmentRight barMetrics:UIBarMetricsDefault];
それがどのように見えるべきか:
それはどのようなものか: