在UISegmentedControl的情况下,一旦出现弹出窗口或警报,控件变暗(灰色(去色调色调)
我正在构建自己的UIControl子类,它使用UILabel作为子视图
我想调暗(去饱和)UILabel的文本颜色,与UISegmentedControl或(UIButton ...)相同
答案 0 :(得分:10)
查看UIView上的tintColor
和tintAdjustmentMode
属性(自iOS 7开始提供)和tintColorDidChange
方法。
如果您在自定义视图中覆盖它们,则可以响应变暗。
正如iOS 7 UI Transitioning Guide所说:
当出现警报或操作表时,iOS 7会自动调暗其后面视图的色调颜色。要响应此颜色更改,在其呈现中使用
tintColor
的自定义视图子类应覆盖tintColorDidChange
以在适当时刷新呈现。
解决方案可能如下所示:
- (void)tintColorDidChange {
self.titleLabel.textColor = self.tintColor;
}
答案 1 :(得分:2)
虽然接受的答案对我有帮助,但结果是即使屏幕没有变暗,也会将暗淡的颜色应用于我的控制。我通过以下方式解决了这个问题:
override func tintColorDidChange() {
switch tintAdjustmentMode {
case .Dimmed:
myLabel.textColor = UIColor.grayColor()
default:
myLabel.textColor = UIColor.blueColor()
}
}
仅当屏幕变暗时,才能正确地将灰色应用于控件。