我正在尝试为 UISegmentedControl 设置 tintColor 和选定的 tintColor。
到目前为止一切正常,除了当 View 首次加载时,即使我调用我的方法来设置 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]];
}
}
谢谢
最佳答案
我认为您可能已将 uisegmentedcontrol 放到导航栏中。当您这样做时,UISegmentedControl 在您的 View 之前加载,因此设置色调颜色是没有用的。我在这里找到解决方案:
self.segmentedControll.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
正如文件所说:
When this property’s value changes (either by the view’s value changing or by one of its superview’s values changing), -the system calls the tintColorDidChange method to allow the view to refresh its rendering.
将这一行添加到您的 viewDidLoad 方法中,这将导致 segmentedcontroll 重绘。
关于ios - UISegmentedControl 在 viewLoad 上选择了 tintColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821497/