我正在尝试设置tintColor并为UISegmentedControl选择tintColor。
到目前为止一切正常,除了事实上当视图首次加载时,即使我调用我的方法设置tintColor(并执行),tintColor实际上也没有正确设置,直到第一次点击。
然而,确实会出现某事正在发生,因为我试图将颜色设置为黑色并选择白色,并且默认颜色稍暗。
有关如何实际修改载荷颜色的任何想法?
//some code
-(void)viewDidLoad
_segmentedControl.selectedSegmentIndex = 0;
[self segmentedControl:_segmentedControl];
//set color method
- (IBAction)segmentedControl:(BaseSegmentedControl *)sender
{
//change the color of every subview(segment) you have
for (int i = 0; i < [[sender subviews] count]; i++ )
{
if ([[sender.subviews objectAtIndex:i]isSelected] )
{
[[sender.subviews objectAtIndex:i] setTintColor:nil];
[[sender.subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]];
}
else
{
[[sender.subviews objectAtIndex:i] setTintColor:nil];
[[sender.subviews objectAtIndex:i] setTintColor:[UIColor blackColor]];
}
}
感谢
答案 0 :(得分:5)
我认为您可能已将您的uisegmentedcontrol放到导航栏中。执行此操作时,UISegmentedControl将在视图之前加载,因此设置色调颜色是没有用的。我在这里找到了解决方案:
self.segmentedControll.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
正如文件所说:
当此属性的值更改时(由视图的值更改) 改变或通过其超级视图的一个值改变) - 系统 调用tintColorDidChange方法以允许视图刷新它 渲染。
将此行添加到viewDidLoad方法,这将导致segmentedcontroll重绘。
答案 1 :(得分:0)
尝试在-viewWillAppear
中进行设置我认为-viewDidLoad
中的视图尚未完全设置。另请注意[super viewDidLoad];
中的-viewDidLoad