Aar*_*ger 4 cocoa-touch uiview ios
在iOS 7上,当色调颜色发生变化时(例如,当显示UIAlertView时),会在其tintColorDidChange
方法中通知视图.
我有几个子视图,我想提供一个自定义的禁用状态.(例如,假设我还想暂时调暗自backgroundColor
定义UIControl.)
我一直在使用这段代码:
- (void)tintColorDidChange {
BOOL isInactive = (CGColorSpaceGetModel(CGColorGetColorSpace([self.tintColor CGColor])) == kCGColorSpaceModelMonochrome);
if (isInactive) {
// modify subviews to look disabled
} else {
// modify subviews to look enabled
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在我的某个应用程序中的某些视图中,活动色调颜色为深灰色,非活动色调颜色为浅灰色.
在这种情况下,两种颜色都报告为"不活动",因为两种颜色都是单色.
是否有更好的测试来确定当前状态是活动还是变暗?
看看UIView tintAdjustmentMode
酒店.这样的东西(在你的自定义控件类中):
- (void)tintColorDidChange {
BOOL isInactive = self.tintAdjustmentMode == UIViewTintAdjustmentModeDimmed;
if (isInactive) {
// modify subviews to look disabled
} else {
// modify subviews to look enabled
}
}
Run Code Online (Sandbox Code Playgroud)
当然,此代码只能在iOS 7.0或更高版本下运行.
归档时间: |
|
查看次数: |
2196 次 |
最近记录: |