2012-09-22 45 views
2

升级至iOS 6后,我的所有UISegmentedControl都出现显示问题,我对其进行了一些自定义。这是它的样子。升级至iOS 6后,UISegmentedControl显示问题6

UISegmentedControl

在iOS 5存在一点问题都没有,如果我在iPhone 4(iOS 5中)运行模拟器它显示正确。

这是我使用的代码:

UIImage *segmentUnselected = [[UIImage imageNamed:@"segmentedcontrol"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)]; 
UIImage *segmentSelected = [[UIImage imageNamed:@"segmentedcontrol_selected"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault]; 

UIImage *segmentDivider = [UIImage imageNamed:@"segmentedcontrol_divider"]; 

[[UISegmentedControl appearance] setDividerImage:segmentDivider 
          forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setDividerImage:segmentDivider 
          forLeftSegmentState:UIControlStateDisabled 
           rightSegmentState:UIControlStateDisabled 
             barMetrics:UIBarMetricsDefault]; 

我使用的应该是精细的图像,他们有两种大小正常和@ 2倍。只要告诉我你是否希望我提供一些细节。

[UPDATE]

卸下与 '正常' imageNamed帽插入可调整大小的图像:对我@ “” 解决了这个问题。

回答

1

我得到了同样的问题: Appearance proxy affected by upgrade to iOS 6

我已经建议删除分隔,但仍显示自由蓝色空间: enter image description here

我有不同高度的两个分段控制器。它看起来像在iOS6中按钮的背景图像没有正确调整大小,而是发生在分隔符上。所以可能我们必须对所有分段控制器使用相同的高度,直到他们发布修复程序。

OR

你可以创建一个自定义的高度每个分区控制器子类,并使用该特定类

0

设置每个栏的分段控制宽度外观代理申请的图像,为我工作。但是对于任何其他6版本的ios版本,我只指定整个分段控件的宽度。

这应该解决分隔器很大并且使分段控制按钮离开框架的问题。

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (version >= 6.0) { 
    [[UISegmentedControl appearance] setWidth:70 forSegmentAtIndex:0]; 
    [[UISegmentedControl appearance] setWidth:70 forSegmentAtIndex:1]; 
}else{ 
    segmentedControl.frame = CGRectMake(0, 0, 139, 30); 
}