我使用以下代码设置UISegmentedControl中每个段的颜色。
for (int i = 0; i < [self.controlStatus numberOfSegments]; i++)
{
NSArray *ar=self.controlStatus.subviews;
if ([[self.controlStatus titleForSegmentAtIndex:i] isEqualToString:@"ON"])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor greenColor]];
}
else if ([[self.controlStatus titleForSegmentAtIndex:i] isEqualToString:@"OFF"])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor orangeColor]];
}
else if ([[self.controlStatus titleForSegmentAtIndex:i] isEqualToString:@"HIDE"])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor redColor]];
}
}
}
但我没有在相应的细分中获得所需的颜色。有时颜色如下:
第1段 - 绿色
第二部分 - 橙色
第3段 - 红色
但在某些阶段,当我导航到其他页面并返回时,颜色会发生变化:
第1段 - 红色
第二部分 - 橙色
第3段 - 绿色
任何人都可以告诉我这里发生的事情。
答案 0 :(得分:0)
UISegmentedControl上没有公共方法可以单独更改每个网段的背景颜色。
你不能轻易使用图片,因为一个片段可以有一个图像或一个标题,但不能两者都有。
您可以通过在带有圆角和边框线的UIView容器中使用rect UIButton来恢复自己的分段控件:
- (void)setBorderWidth:(CGFloat)_borderWidth color:(UIColor *)_borderColor cornerRadius:(CGFloat)_cornerRadius
{
CALayer *layer = self.layer;
layer.borderWidth = _borderWidth;
layer.borderColor = _borderColor.CGColor;
layer.cornerRadius = _cornerRadius;
layer.masksToBounds = (_cornerRadius > 0.0);
}
答案 1 :(得分:-1)
我找到了解决方案。它符合我的需要..
if(Status==0)
{
[self.controlStatus setSelectedSegmentIndex:0];
[self.controlStatus setEnabled:FALSE forSegmentAtIndex:1];
for (int i = 0; i < [self.controlStatus numberOfSegments]; i++)
{
if ([[self.controlStatus.subviews objectAtIndex:i] isSelected])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor greenColor]];
}
}
}
else if(Status==1)
{
[self.controlStatus setSelectedSegmentIndex:1];
for (int i = 0; i < [self.controlStatus numberOfSegments]; i++)
{
if ([[self.controlStatus.subviews objectAtIndex:i] isSelected])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor orangeColor]];
}
}
}
else if(Status==2)
{
[self.controlStatus setSelectedSegmentIndex:2];
for (int i = 0; i < [self.controlStatus numberOfSegments]; i++)
{
if ([[self.controlStatus.subviews objectAtIndex:i] isSelected])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor redColor]];
}
}
}
我已经将这段代码写入了我想要setSelectedSegmentIndex。