iOS核心动画技巧学习-CALayer常用属性2

阴影

阴影作为一个iOS的常见特性,可以达到图层深度暗示的效果,更多的目的是单纯的装饰(┑( ̄Д  ̄)┍)

  • shadowOpacity—- 默认值是0,范围是(0-1),改变这个值,阴影就可以显示在任意图层之下 ,若想自定义,请往下看
    • shadowColor – 默认是黑色, CGColorRef 类型
    • shadowOffset – 默认{0,-3}, CGSize 类型;第一个参数控制阴影横向位移,第二个参数控制纵向位移,默认是阴影相对于Y轴有3个点的向上偏移;此处默认向上偏移是因为虽然 Core Animation 是为iOS创建的私有动画框架,但是却是先在 Mac OS上面世的,而且iOS和Mac OS的Y轴是颠倒的.在Mac上, shadowOffset 默认值是阴影偏下的
    • shadowRadius – 阴影的模糊度 值越大,边界线看上去越模糊和自然
阴影裁剪
  • 常见问题 : 阴影裁剪根据内容的外形来裁剪,而不是根据边界和角半径;一般情况下的阴影通常在图层的边界之外,如果开启了 masksToBounds属性,那么阴影就会被剪裁掉
  • 解决办法 : 将需要裁剪的图层再用单独的视图包起来,然后切最外层的这个视图;
shadowPath属性
  • 问题
    图层阴影是从图层内容的形状继承而来的,可以是方的可以使圆的;实时计算阴影非常耗资源,尤其是图层有多个子图层
  • 解决
    shadowPath 是个 CGPathRef类型,一个指向 CGPath 的指针;如果是一个矩形或者圆,用 CGPaht 相对简单明了;如果是一个更加复杂的图形, UIBezierPath会更加合适
拉伸过滤
  • 视图显示: 视图显示图片,应该是按照正确的比例和正确的1:1像素显示在屏幕上
    • 这样能显示最好的画质,像素没有被压缩和拉伸
    • 这样能更好的使用内存
    • 最好的性能,CPU不需要作出额外的计算
  • 事与人违,显示一个非真实大小的图片是我们常见的需求

    • kCAFilterLinear 图片放大(magnification)和缩小(minification)默认的过滤器,双线性滤波算法,通过对多个像素取样生成新的值(不适合放大倍数比较大的)
    • kCAFilterTrilinear 和双线滤波相似,不过会储存多个大小情况的图片,好处在于能从一系列接近最终大小的图片中得到想要的结果,提高了性能,也避免了小概率因舍入错误取样失误的问题
    • kCAFilterNearest 最近过滤,取样最近的单像素点,速度快,但是压缩图片更遭,图片放大显得块儿状或马赛克严重
    组透明
    • UIViewalpha属性确定视图的透明度; CALayer 有等同的属性 opacity,这俩个属性会影响子层级
这个人很帅<br>他什么都不想说<br>