与UISegmentedControl和UIAppearance怪异的行为(Weird behavi

2019-07-30 02:52发布

我通过设置在应用程序的委托这些语句分段控件的外观。

    [[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_normal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] 
        forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

    [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalNormal.png"]   forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalSelected.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
    [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_SelectedNormal.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

其结果是好的。 背景和分频器正确设置时,我选择任意段(订单段被默认选中时,应用程序首次启动)。 当我选择的发行段下面你可以看到一切都看起来不错。

问题是,当我走出去的视图,然后返回到视图(我保存选定的索引,并将其设置在viewDidLoad中重新选择段),分压器设置不正确一些未知的原因。

如果我对AZ挖掘再释放,它是否自行解决。 此错误仅发生在第一视图载荷和所选择的段要么推出或AZ。 当选择订购和视图负荷分频器总是看起来不错。

图像尺寸:分频器是2px的宽(所有3个图像是相同的尺寸),背景是2像素宽的每个。

任何意见或指针将不胜感激,我一直在拉我的头发在过去的10小时试图找到一个解决方案没有可用的。

Answer 1:

这是UISegmentedControl中的错误,我想。 你可以解决它通过延迟后设置所选段,允许控制时间自行绘制。 你甚至不必用一个实际的延迟,只是这样的:

[self performSelector:@selector(setPreferences) withObject:nil afterDelay:0.0];

setPreferences更新您的分段控制的价值。



文章来源: Weird behavior with UISegmentedControl and UIAppearance