本文是通过Ray网站的UIAppearance-tutorial学习后的知识点记录,觉得在实际开发还是很有可能用到.
tintColor的使用
对指定视图设置tintColor后,会自动改变该视图的视图层次上所有其子视图tintColor.例如下面代码:
UIApplication.sharedApplication().delegate?.window??.tintColor = theme.mainColor
改变根窗口的tintColor,作为其层次层次所有的子视图的tintColor都会成为同一颜色
UIAppearance协议对象的使用
改变UIAppearance协议对象的属性,就能改变所有其遵从该协议类的所有实例,iOS应用的appearance只会对当视图加入到窗口时有效,对于已经添加在窗口的视图不起作用,需要通过移除其所在的视图层次位置,再添加回来.
iOS对图像的渲染模式
Original
: 使用图像原有的色彩渲染
Template
: 忽略图像原有的色彩,仅仅将图像的图形做样本,使用tintColor的颜色来渲染图形
Automatic
: 根据使用图像的上下文环境,系统决定选用以上中的一种进行图形的色彩渲染,常常在应用导航栏或工具栏的items上.
改变导航栏的返回item的图片以及细节处理
必须设置backIndicatorImage, backIndicatorTransitionMaskImage指定图片才能成功.
UINavigationBar.appearance().backIndicatorImage = UIImage(named: "backArrow")
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named: "backArrowMaskFixed")
iOS遮罩处理
被遮罩层只有通过遮罩层上的非透明像素可见, 其他区域只要在透明的像素下都不可见.
下图红色图形作为遮罩层后,如果两层有叠加,灰色图形只会显示遮罩层有红色像素的区域
iOS中对图片的裁剪和拉伸
tabIndicator.resizableImageWithCapInsets(UIEdgeInsets(top: 1.0, left: 2.0, bottom: 1.0, right: 2.0)
代码中top,left,bottom,right 为目标图像四个方向裁剪线的边界值,只有在裁剪线所围成的区域才会被裁剪和平铺,按左到有,上到下的顺序进行图片大小调整.通常用避免图片四端不变形,平铺中间小块区域才达到调整图像大小的目的,官方推荐最好的性能的裁剪方式是平铺区域只有1x1像素.