iOS tintColor解析
在UIView中一个相对来说比较小的属性,tintColor属性是相当的强大。今天我们就来看看如何使用他,包含使用tint color进行着色标准控件、我们自定义控件甚至重新着色图像。
本章的实例程序能够在github上面进行访问,访问地址:github.com/ShinobiControls/iOS7-day-by-day
Tint color of existing iOS controller – 使用tint color为iOS中已经存在的控件进行着色
在iOS7中,UIView新增了一个属性tintColor.这是一个UIColor,被使用在UIView中改变应用程序的外观的。默认tintColor的值为nil,这表示它将会运用父视图层次的颜色来进行着色。如果父视图中没有设置tintColor,那么默认系统就会使用蓝色。因此,可以通过设置root view controller的tintColor来改变系统整体的颜色。
为了证明这一点,我们需要知道tintColor如何改变标准控件的外观,可以看看我们已经写好的ColorChanger应用程序。
在storyboard中包含了一系列的控件,包括UIButton, UISlider和UIStepper,在view controller中我们有一个改变颜色的按钮关联到下面的方法:
1 |
|
这个方法的主体就是生成一个随机的颜色, 最后一行设置tint color。
有一个UI control并不是响应tintColor的变化,它就是UIProgressView.是因为它具有两个tint colors(一个是设置进度条本身,一个设置进度轨道色的),为了能够改变,我们需要添加一个方法:
1 |
|
当调用changeColorHandler:方法之后:


Tint Dimming – 颜色变暗
除了能够设置色调颜色(tintColor),还有另外的一个属性在UIView中,它可以使tint color变暗, 因此整个视图层次变暗。这个属性是tintAdjustmentMode,并且它可以在三个值里面选择一个设置(UIViewTintAdjustmentModeNormal, UIViewTintAdjustmentModeDimmed和UIViewTintAdjustmentModeAutomatic)
为了展示这个效果,我们需要添加一个UISwitch控件并且绑定它的valueChanged:事件到下面的方法上面:
1 |
|
当你点击UISwitch之后,整个页面变暗了,这样的很方便进行弹出框的效果,展示弹出框的时候,后面的页面变暗,以免分散用户的注意力。
Using tint color in custom views – 给自定义发视图进行着色
UIView中有一个新的方法,当tintColor或者tintAdjustmentMode属性发生变化的时候就会调用这个方法。
为了查看它是如何工作的,我们需要创建一个UIView的子类,它包含一个整个的色块,一个标签的文本颜色和tint color相同,还有一个一直保持灰色的标签。
1 |
|
到目前为止,我们都没有做什么新鲜的事情,只是搭建了一个简单的UIView的子类。有趣的内容现在就来了。我们复写一个新的方法tintColorDidChange:
1 |
|
我们做的就是根据当前view的tintColor进行设置一些控件的颜色。
就是这么的简单。在view controller中的代码并不需要修改,因为设置tintColor只是在UIView层次中进行赋值。


Tinting images with tintColor – 给图像着色
最后有关tintColor比较cool的能力就是,它可以为一个图像着色。图像着色的时候会把所有像素alpha为1的全部变换成tintColor的颜色,其他的颜色就会设置成透明。
在这个demo中,我将会展示如何着色图片。
我们需要在storyboard中添加一个UIImageView,并且设置关联为tintedImageView,然后在viewDidLoad中添加如下代码:
1 |
|
首先我们加载一个图像,然后我们调用imageWithRenderingMode:方法来改变图像渲染模式为UIImageRenderingModeAlwaysTemplate,其他两个选项是UIImageRenderingModeAlwaysOriginal和andUIImageRenderingModeAutomatic。默认是andUIImageRenderingModeAutomatic,在这个情况下,根据上下文来改变图像,例如标签栏、工具栏等都是设置成模板对象。
一旦你设置图像的模式为模板图像,并且设置比例,确保图不失真。


Conclusion – 总结
表面上tintColor很简单的UIView,然而,它实际上代表了一些令人难以置信的强大的外观定制功能。如果你创建自己的UIView子类或自定义控件,然后,我鼓励你,实现tintColorDidChange——它会让你的工作更多的与标准UIKit组件串联。
iOS tintColor解析的更多相关文章
- 【译】UI设计基础(UI Design Basics)--iOS应用解析(iOS App Anatomy)(三)
2.1 iOS应用解析(iOS App Anatomy) 几乎所有的iOS应用都会用到UIKit框架中的组件.了解这些基础组件的名称,角色,功能可以帮你在应用界面设计时做出更好的决策. UIKit提 ...
- iOS中解析 XML / JSON
JSON数据格式 1. 概述: JSON (JavaScript Object Notation) 是⼀一种轻量级的数据交换格式 基于⽂文本格式,易于⼈人阅读和编写,同时也易于机器解析和⽣生成. 2. ...
- IOS 原生解析JSON 问题
服务器----WebService 返回的是JSON数据 IOS解析报错: Error Domain=NSCocoaErrorDomain Code=3840 "Unable to conv ...
- iOS 基础类解析 - NSDate
版权声明:本文为博主原创文章,未经博主同意不得转载.转载联系 QQ 30952589,加好友请注明来意. https://blog.csdn.net/sleks/article/details/248 ...
- IOS 文件解析
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...
- iOS书摘之Objective-C编程之道 iOS设计模式解析
来自<Objective-C编程之道iOS设计模式解析>一书的摘要总结 一.Prototype 原型模式 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象.(<设 ...
- iOS 基础类解析 - NSData、NSMutableData
iOS 基础类解析 - NSData.NSMutableData 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致& ...
- iOS 基础类解析 - NSString、NSMutableString
iOS 基础类解析 - NSString 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...
- 【读书笔记】iOS网络-解析响应负载
Web Service可以通过多种格式返回结构化数据, 不过大多数时候使用的是XML与JSON.也可以让应用只接收HTML结构的数据.实现了这些Web Service或是接收HTML文档的应用必须能解 ...
随机推荐
- mysql 字段编码该为utf8mb4
alter table c_comment modify column content varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unico ...
- quartz2D简单使用
quartz2D绘图 1:上下文:context,这个翻译不好理解,其实翻译环境更好一点,就是给了你一个画板,你看不到而已 在: CGContextRef ctx = UIGraphicsGetCur ...
- 向Array中添加堆排序
堆排序思路 堆排序是一种树形选择排序方法(注意下标是从1开始的,也就是R[1...n]). 1) 初始堆: 将原始数组调整成大根堆的方法——筛选算法:比较R[2i].R[2i+1]和R[i],将最大者 ...
- VC6.0装了visual assist x回车键不能补全代码的解决方法
问题:VC6.0装了visual assist x补全代码具体怎么用? 输入字母后会像输入法那样出现一个菜单 但是怎么选择菜单里面的内容呢? 什么 回车 ...
- ASP.NET MVC 如何在一个同步方法(非async)方法中等待async方法
问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public ActionResult Asv2() { //dead lock var t ...
- hdu 3123 GCC 阶乘
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3123 The GNU Compiler Collection (usually shortened t ...
- Android系统Recovery工作原理
Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作 http://blog.csdn.net/mu0206mu/article/d ...
- date format 精辟讲解
link: http://stackoverflow.com/questions/19533933/nsdateformatter-how-to-convert-wed-23-oct-2013-045 ...
- DSP中的cmd文件
一.CMD文件 链接命令文件(Link Command Files),以后缀.cmd结尾,简称CMD文件. CMD文件的两大功能是指示存储空间和分配段到存储空间. 在编写CMD文件时,主要采用MEMO ...
- ios 图片转视频
转自:http://blog.iosxcode4.com/archives/160 用到的FrameWork有: MediaPlayer.framework,QuartzCore.framework, ...