OC CALayer 视图特效

001 阴影

阴影的形状是继承layer形状,其实在计算阴影的时候很耗费资源,尤其是很多图层的时候,每个图层还有一个透明效果的寄宿图.可以在事先知道图层的形状的情况下提前计算出阴影就可以提高性能.

//一个矩形阴影

    CGMutablePathRef squarePath = CGPathCreateMutable();

    CGPathAddRect(squarePath, NULL, self.layerView.bounds);

    self.layerView.layer.shadowPath = squarePath;

    CGPathRelease(squarePath);

    //一个圆形阴影

    CGMutablePathRef circlePath = CGPathCreateMutable();

    CGPathAddEllipseInRect(circlePath, NULL, self.layerView1.bounds);

    self.layerView1.layer.shadowPath = circlePath;

    CGPathRelease(circlePath);

生成的CGPath是Core Graphics 对象用来指定任意一个矢量图形.

 

002 拉伸过滤

缩小和放大拉伸 当我们显示一张图片的时候,都应该正确的显示这个图片(正确的的比例和正确的像素显示在屏幕上)

1.能够显示最好的花枝,像素既没有被压缩也没有被拉伸

2.能够更好地使用内存,因为这就是你要的存储的东西

3.最好的性能表现,CPU不需要为此额外的计算

当图片不要显示不同的大小的时候,有一种拉伸过滤的算法就起到作用了,它作用于原图的像素上并根据需要生成新的像素显示在屏幕上.CALayer为此提供了三种拉伸过滤的方法.KCAFilterLinear KCAFilterNearest KCAFIiterTrinear 

minification magnification 过滤器采用KCAFilterLinear 双线性滤波算法,而KCAFIiterTrinear 三线性滤波算法存储了多个大小情况下的图片(多重贴图),并三维取样,同时结合大图和小图的存储进而得到最后的结果.KCAFilterNearest比较干脆直接最近的单像素点不管其他颜色,这样做会导致图片压缩质量不高,图片放大后明显块状或者马赛克严重.

透明 CALayer 中有个shouldRasterize属性 翻译成中文是栏栅化 如果设置成YES 在应用透明度之前,图层及其自图层都会整合成一个整体的图片.为了启用shouldRasterize属性,设置rasterizationScale属性去适配屏幕,以防止出现Retain屏幕像素问题.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值