我在 titleBar 中有一个带有 segmentedControl 的应用程序,用于在 3 个导航控制器之间切换。我正在使用新的外观代理方法来设置这个 segmentedControl 的样式(下面的代码)。但是,似乎有某种我无法弄清楚的错误。当我潜入其中一个导航控制器然后导航回根时,它会出现(然后在顶部栏中再次显示分段控制)。发生这种情况时,如您在屏幕截图中看到的那样,分隔线图形会变得混乱(第一个显示它应该是什么样子)。
有没有人遇到过类似的情况并知道如何解决?
我设置外观的代码是:
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];
它应该是什么样子:
它看起来像什么: