我正在尝试为UISegmentedControl设置tintColor并选择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]];
}
}
谢谢
最佳答案
我认为您可能已经将uisegmented控件放到了导航栏中。当您执行此操作时,将在视图之前加载UISegmentedControl,因此设置颜色没有用。我在这里找到解决方案:
self.segmentedControll.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
如文件所述:
当此属性的值更改时(根据视图的值
更改或通过其父视图的值之一更改),-系统
调用tintColorDidChange方法以允许视图刷新其
渲染。
将此行添加到viewDidLoad方法中,这将导致segmentedcontroll重绘。
关于ios - UISegmentedControl在viewLoad上选择了tintColor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17821497/