3分钟理解tintColor是个啥玩意

我讲到小概念,喜欢用简明的语句描述清楚。今天描述一下tintColor,喜欢读长篇大论的,我在后面附了传送门。

1.所有的常用控件,都有tintColor属性。其中,UIView也有这个属性,可想而知继承UIView的控件也都有tintColor了。

2.使用场景:当父视图更改了tintColor为red,那么它所有的一级子视图tintColor全部为red,除非你主动设置过子视图的tintColor。它再往下的子视图的tintColor则遵循直接父视图的tintColor 。

3.如果没有给任何视图指定过tintColor,系统会默认给原生控件指定一个tintColor,比如UIButton的title和UIProgressView的progress都是淡蓝色。

注意是原生控件,如果你的控件是自定义的,比如UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];这样初始化来的,系统就没有为Button 的title颜色指定为默认的蓝色tintColor。

如果你要使用tintColor,需要子类化它,然后在- (void)tintColorDidChange里面写上[self setTitleColor:self.tintColor forState:UIControlStateNormal],就OK了。

所以我猜想,系统默认将控件的某些颜色指定为tintColor的情况下,是因为系统控件的源码里面有上面这句set...Color: self.tintColor 。

示意图:

              


这个tintColor属性是从iOS7才开始引入的,个人认为苹果的目的是为了界面风格的统一性,因为从7开始,iOS摒弃了原有的拟物化风格而转为了扁平化。


参考传送门:https://www.shinobicontrols.com/blog/ios7-day-by-day-day-6-tint-color

中文版:http://www.cocoachina.com/ios/20150703/12363.html?utm_medium=referral&utm_source=pulsenews


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值