博主今天把剩下的两个小节好好看了下,又敲了敲代码,还是发现了一些问题,那么下面在说这两节的过程中简述下博主遇到的问题,大家一起来看看,不清楚是博主代码的问题还是Xcode已经弥补了原先的缺陷。
1.拉伸过滤
当图片需要显示不同的大小时就会对图片进行拉伸,比如我们经常用到的设置头像等,它作用于原图片的像素上并根据需要生成新的像素图片展示在屏幕上。这里它有一个属性叫做magnificationFilter,这是一个枚举,它有三个值可供选择:
kCAFilterLinear kCAFilterNearest kCAFilterTrilinear
系统默认为kCAFilterLinear,双线行滤波算法,它通过对多个不同的像素取样,生成一个新的值,得到一个相对平滑的拉伸效果。
三线性滤波算法kCAFilterTrilinear和kCAFilterLinear很相似,大多数情况下表现相同,区别在于三线性滤波算法储存了多个大小的图片,通过三维取样,对所储存图片的大小进行比较得出合适的值。
正如书中说的,kCAFilterNearest如其名,就是采取就近取单像素点的方法,当然,出来的图片无可避免的会模糊,它只适用线条简单的图片。
书中提供了一些代码来供测试,博主写了一下,发现使用默认的双线性滤波算法并没有出现如同书中所说的模糊,事实上,博主试了以上三种属性,然而全都一个样。代码在这里,请自行下载查看:https://github.com/codeliu6572/magnificationFilter,对于博主说的问题,大家可以自己试试看。
2.组透明
如拉伸过滤一样,博主同样发现了一些问题,不管怎么设置都是全组透明的,不会出现其中颜色不一致的情况,当然,前提是必须颜色一致,否则颜色必须有差异,这一节的核心就是这两句代码:
button2.layer.shouldRasterize = YES; button2.layer.rasterizationScale = [UIScreen mainScreen].scale;
不过博主查了下发现shouldRasterize这个属性设置为YES有助于提高系统的流畅性,比如设置圆角时,TableView滚动时动态设置圆角。代码:https://github.com/codeliu6572/AlphaAndOpacity
对于出现的不能重现的问题,博主感觉也只能归咎于Xcode在更新后完善了这个功能,如果有谁发现这几个问题是怎么回事,可以重现可以告诉博主。