nim*_*sai 27 objective-c uisegmentedcontrol ios ios5
这是我的问题.我通过以下方式设置背景和分隔图像来自定义UISegmentedControl:
[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segUnselectedSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
当我尝试将第一个分段选中时 viewDidLoad
self.segmentedControl.selectedIndex = 1;
Run Code Online (Sandbox Code Playgroud)
我得到以下奇怪的事情:
代替:
有谁知道这是一个错误,我怎么能提供错误报告?如果没有,我的代码可能出现什么问题?
Fer*_*uga 10
在做了一些测试并尝试了几个不同的位置进行定制之后,我相信这可能确实是一个错误.
即使使用非常简单的直接UISegmentedControl,这也是我得到的(使用Xcode 4.3.1,iOS 5.1):
在代码中启动并选择中间元素后:
用户单击并单击中间元素后:
我使用3px宽图像作为分隔符,1px宽图像作为背景.
编辑:我想我找到了一个解决方法:尝试排队指令以选择元素,而不是在viewDidLoad中执行它,如下所示:
dispatch_async(dispatch_get_main_queue(),^{
self.segmentedControl.selectedSegmentIndex = 1;
});
Run Code Online (Sandbox Code Playgroud)
在我上面的例子中,排队该指令使其工作得很好.