自定义UIControl,UILabel调色,颜色变化

时间:2014-01-09 11:26:01

标签: cocoa-touch ios7 uicontrol

在UISegmentedControl的情况下,一旦出现弹出窗口或警报,控件变暗(灰色(去色调色调)

我正在构建自己的UIControl子类,它使用UILabel作为子视图

我想调暗(去饱和)UILabel的文本颜色,与UISegmentedControl或(UIButton ...)相同

2 个答案:

答案 0 :(得分:10)

查看UIView上的tintColortintAdjustmentMode属性(自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()
    }
}

仅当屏幕变暗时,才能正确地将灰色应用于控件。