美文网首页
Core Animation:拉伸过滤和组透明

Core Animation:拉伸过滤和组透明

作者: 黄龙辉 | 来源:发表于2016-02-22 16:09 被阅读133次

拉伸过滤

当我们使用图层显示图片时,理想情况下就是图片的像素和显示图片区域的像素比例为1:1。但是,许多情况下,图片是需要进行拉伸的。当图片需要显示不同的大小时,有一种叫做拉伸过滤的算法就起到作用了。它作用于原图的像素上并根据需要生成新的像素显示在屏幕上

图层提供了3种拉伸过滤算法。属性magnificationFilterminificationFilter,它们默认都采用kCAFilterLinear算法。

  • kCAFilterLinear:通过对多个像素取样最终生成新的值,得到一个平滑的表现不错的拉伸。但是当放大倍数比较大的时候图片就模糊不清了

  • kCAFilterNearest:和kCAFilterLinear非常相似,大部分情况下二者都看不出来有什么差别。但是,较双线性滤波算法而言,三线性滤波算法存储了多个大小情况下的图片(也叫多重贴图),并三维取样,同时结合大图和小图的存储进而得到最后的结果。它能够从一系列已经接近于最终大小的图片中得到想要的结果,也就是说不要对很多像素同步取样。这不仅提高了性能,也避免了小概率因舍入错误引起的取样失灵的问题

  • kCAFilterTrilinear:取样最近的单像素点而不管其他的颜色。这样做非常快,也不会使图片模糊。但是,最明显的效果就是,会使得压缩图片更糟,图片放大之后也显得块状或是马赛克严重。

效果展示:

左边采用了kCAFilterLinear,右边采用kCAFilterNearest 左边采用了kCAFilterLinear,右边采用kCAFilterNearest

总结:对于比较小的图或者是差异特别明显,极少斜线的大图,最近过滤算法会保留这种差异明显的特质以呈现更好的结果。但是对于大多数的图尤其是有很多斜线或是曲线轮廓的图片来说,最近过滤算法会导致更差的结果。换句话说,线性过滤保留了形状,最近过滤则保留了像素的差异。

组透明

实现组透明的两种方法:

  1. 在info.plist文件中,设置UIViewGroupOpacity(key为Renders with group opacity)为YES(iOS7及以上的版本默认为YES);
  2. 设置CALayer的一个叫做shouldRasterize属性为YES。在应用透明度之前,图层及其子图层都会被整合成一个整体的图片,这样就没有透明度混合的问题了。默认情况下,所有图层拉伸都是1.0, 所以如果使用了shouldRasterize属性,就要确保设置rasterizationScale属性去匹配屏幕,以防止出现Retina屏幕像素化的问题。

相关文章

  • Core Animation:拉伸过滤和组透明

    拉伸过滤 当我们使用图层显示图片时,理想情况下就是图片的像素和显示图片区域的像素比例为1:1。但是,许多情况下,图...

  • iOS实现一个电子时钟

    最近在学习iOS-Core Animation相关东西。学以致用,这里用寄宿图和拉伸过滤来实现一个电子时钟。最终效...

  • iOS动画

    1、Core Animation Core Animation,即为核心动画,它是一组非常强大的动画处理API,使...

  • 核心动画Core Animation

    文 || 張贺 Core Animation简介 Core Animation,中文翻译为核心动画,它是一组非常强...

  • 4.2 iOS核心动画Core Animation

    1.2核心动画Core Animation (一)概述 Core Animation中文翻译就是核心动画,它是一组...

  • iOS动画- Core Animation

    Core Animation译为核心动画,它是一组非常强大的动画处理API。Core Animation的动画执行...

  • iOS图层配合核心动画详解

    Core Animation Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,...

  • 核心动画(一)

    一、Core Animation简介 Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理...

  • Core Animation

    一:Core Animation简介 Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理...

  • iOS那些简单的动画(不定期更新)

    关于 Core Animation Core Animation是一组非常强大的动画处理API,使用它能做出很多优...

网友评论

      本文标题:Core Animation:拉伸过滤和组透明

      本文链接:https://www.haomeiwen.com/subject/lbythttx.html