gpt4 book ai didi

segmentedControl 和 UIAppearance 代理的图形问题

转载 作者:行者123 更新时间:2023-12-04 23:57:04 26 4
gpt4 key购买 nike

我有一个在 titleBar 中带有 segmentedControl 的应用程序,它用于在 3 个导航 Controller 之间切换。我正在使用新的外观代理方法来设置此 segmentedControl 的样式(下面的代码)。但是,似乎存在某种我无法弄清楚的错误。当我深入其中一个导航 Controller 然后导航回根目录(然后再次在顶部栏中显示 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];

它应该是什么样子:

what it is supposed to look like

它看起来像什么:

enter image description here

最佳答案

我通过外观为 UINavigatorBar 使用了 backgroundImage,并注意到将这种方法与 UISplitViewController/UIPopoverController 一起用于整个导航栏被移动到内容区域。所以你只看到深蓝色边框,自定义导航栏位于边框正下方,看起来很奇怪。

对您没有帮助,但这可能是一个真正的错误?!

关于segmentedControl 和 UIAppearance 代理的图形问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com