iOS开发之tintColor属性详解
详解tintColor属性
tintColor属性是iOS7之后新加的一个属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构。它主要是改变控件的颜色,以获取一些有意思的视觉效果。
- tintColor属性- 默认情况下,tintColor属性是默认为nil的,当我们设置一个视图的tintColor属性时,他会自动传播到他的子视图的,因此,要设置一个控件的颜色,即就要设置他的父视图的tintColor,当你没有设置tintColor时,系统默认为蓝色。
- 与tintColor属性相关的还有个tintAdjustmentMode属性,它是一个枚举值,定义了tint color的调整模式。
typedef NS_ENUM(NSInteger, UIViewTintAdjustmentMode) {UIViewTintAdjustmentModeAutomatic,//视图的着色调整模式与父视图一致UIViewTintAdjustmentModeNormal, // 视图的tintColor属性返回完全未修改的视图着色颜色UIViewTintAdjustmentModeDimmed,// 视图的tintColor属性返回一个去饱和度的、变暗的视图着色颜色} NS_ENUM_AVAILABLE_IOS(7_0);
- tintColorDidChange方法- 这个方法会在视图的tintColor或tintAdjustmentMode属性改变时自动调用。另外,如果当前视图的父视图的tintColor或tintAdjustmentMode属性改变时,也会调用这个方法。我们可以在这个方法中根据需要去刷新我们的视图。
示例:
下面这个图片中是我在故事板中拖得几个控件,其中有按钮,label,滑块,imageView,当然都还没有设置tintColor的
当我把self.view的tintColor改为red时,效果图如下
如上,大家可以看见可以通过改一个tintColor属性可以改很多控件的颜色,当你想要在一款APP中把他所有的控件颜色都改了的话,就可以在APPDelegate里改变window的tintColor,我尝试打印默认的tintColor和tintAdjustmentMode,分别输出了[UIDeviceRGBColorSpace 0 0.478431 1 1]和1,这是在我们没有对整个视图层次结构设置任何tint color相关的值的情况下的输出。可以看到,虽然我们没有设置tintColor,但它仍然返回了系统的默认值;而 tintAdjustmentMode则默认返回Normal的原始值。
NSLog(@"%@",self.view.tintColor);NSLog(@"%ld",self.view.tintAdjustmentMode);self.view.tintColor = [UIColor redColor];
可能有些同学看到这儿纳闷了,不是说tintColor可以改变子视图的颜色吗?怎么上面的label和imageView的颜色怎么没改呢,这个问题呢,其实很简单,我们可以通过重写tintColorDidChange这个方法来监测tintColor的变化,当self.View的tintColor颜色改变时,可以设置label字体的颜色。imageView的颜色没改的原因是我们没有设置图片的imageWithRenderingMode属性为AlwaysTemplate
转载于:https://www.cnblogs.com/tmf-4838/p/5380433.html
iOS开发之tintColor属性详解相关推荐
- iOS开发之Accounts框架详解
2019独角兽企业重金招聘Python工程师标准>>> iOS开发之Accounts框架详解 Accounts框架是iOS原生提供的一套账户管理框架,其支持Facebook,新浪微博 ...
- Android 开发之EditText属性详解
EditText & TextView 属性详解: android:layout_gravity="center_vertical" 设置控件显示的位置:默认top. an ...
- edtext 从右边开始输入 安卓_Android开发之EditText属性详解
1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以".&quo ...
- Android开发之EditText属性详解+++ImageView的属性
Button的使用 不要阴影Button ---> TextView (5.0新特性) <!-- 去按钮立体效果 --> <item name="android: ...
- android中oncreate方法,android开发之onCreate( )方法详解
这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...
- android idata 模式,Android快速开发之appBase——(3).详解IHolder和IData
Android快速开发之appBase--(3).详解IHolder和IData IHolder和IData是AVLib的两个组件,在前面已经使用过了,那么这一篇将会详细说明这两个组件的用法. IHo ...
- Android快速开发之appBase——(4).详解com.snicesoft.Application和BaseActivity
转载请注明本文出自JFlex的博客http://blog.csdn.net/jflex/article/details/46441571,请尊重他人的辛勤劳动成果,谢谢! Android快速开发之ap ...
- android开发之onCreate( )方法详解
android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Go ...
- 安卓开发之IPC机制详解
IPC(Inter-Process Communication),意为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程.前面在学习Handler机制时提到过线程与进程的概念,在安卓中一个进 ...
最新文章
- ImageView / Text 使用 android:state_pressed 没有效果的处理方法
- Java的正则表达式使用及案例
- 数据可视化配色指南:三大配色方法,做出咨询报告一样的图表丨附在线工具资源...
- java随机抽题系统_在用java做一个在线考试系统,随机抽题遇到了问题,我写了一个随机抽题的方法,不知道在asp按钮中怎么用...
- junit 测试执行顺序_JUnit 5中的测试执行顺序
- asp: menu 父级选中
- 九章云极DataCanvas完成C轮融资:定义标准化AI基础架构未来
- react在组件内插入标签_javascript – 如何将css类添加到react中的组件?
- pku 1321 棋盘问题 DFS
- 进程间通信---共享内存 ftok shmat shmget shmdt shmctl
- Java Synchronized的用法
- 在mysql中怎么存储表情符号,如何在MySQL数据库中存储表情符号字符
- 阿里巴巴矢量图标 iconfont 下载图标分辨率小一点、并占得内存小一点呢
- 传输层 可靠传输 连续ARQ协议和滑动窗口协议
- 麦克风阵列语音增强(一)
- 一行代码统计文本中指定字符串出现的次数
- 游戏服务器级别分类及对应服务器架构
- 关于以太坊 雷电网络 的思考
- MII,RMII,GMII接口详细介绍
- 用python处理水仙花数
热门文章
- C# http监听之Nancy.net
- Google 开源下一代高安全性机密运算开发框架 Asylo
- OpenWrt分支LEDE嵌入式无线路由系统定制-1.编辑环境搭建
- 方法论:怎样练习一万小时
- 使用SVN clang: error: linker command failed with exit code 1 (use -v to see invocation)
- windows和linux 修改 hosts的路径
- 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手
- 杭州街头惊现“梦想改造家”,ATM取款区变废为宝
- volatile关键字使用总结
- Jenkins+git 实现代码自动发布