为什么以下代码有效:
[signInBtn setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[signInBtn setTitleColor:[UIColor blackColor] forState:UIControlStateDisabled];
虽然没有:
[signInBtn setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted|UIControlStateDisabled];
答案 0 :(得分:29)
我知道这是一个老问题,但这些答案都不正确。
当您单独设置每个属性时,您说state
属性应为UIControlStateHighlighted
或UIControlStateDisabled
但不是两者
当你按位或它们在一起时,你说明它们必须同时设置在state
属性中。含义UIControlStateHighlighted
和UIControlStateDisabled
在state
属性中设置。
下面的示例代码完美地说明了我的观点。如果你不同意自己运行它。
[button setTitle:@"highlighted and selected" forState:UIControlStateHighlighted | UIControlStateSelected];
[button setTitle:@"Highlighted only" forState:UIControlStateHighlighted];
[button setTitle:@"Selected only" forState:UIControlStateSelected];
[button setTitle:@"Normal" forState:UIControlStateNormal];
NSLog(@"Normal title: %@", [[button titleLabel] text]); // prints title: Normal
[button setSelected:YES];
NSLog(@"Selected title: %@", [[button titleLabel] text]); // prints title: Selected only
[button setSelected:NO];
[button setHighlighted:YES];
NSLog(@"highlighted title: %@", [[button titleLabel] text]); // prints title: Highlighted only
[button setSelected:YES];
NSLog(@"highlighted and selected title: %@", [[button titleLabel] text]); // prints title: highlighted and selected
答案 1 :(得分:2)
因为setTitleColor:forState:方法只能接受已知的UIControlState,并且您正在将两个UIControlState值进行ORing。
每个UIControlState(处于低级别)很可能是一个简单的整数常量。
<强>更新强>
这是一个位掩码,这使得它更加奇怪,它不起作用,但我的观点仍然存在。 (尽管它偏向一侧并且危险地摇摆不定。)
答案 2 :(得分:-1)
这可能是一个错误。尝试更改具有意外值的位掩码,例如UIControlStateHighlighted
&amp; UIControlStateDisabled
,它使所有的状态颜色都相同。