iOS绘制与渲染--图层属性
图层属性的渲染顺序
在渲染处理期间,Core Animaiton持有图层的不同属性,并按顺序渲染这些属性。该顺序决定了图层最终的呈现。
几何属性
一个图层的几何属性指定它相对于它的父图层被显示的方式。几何属性页指定了图层圆角的半径以及应用到图层和它的子层的变换。图A-1显示了示例图层的边界矩形。
文章图片
图层几何 下面列出的CALayer属性制定了一个图层的几何结构:
- bounds
- position
- frame(根据bounds和position计算得出,该属性是不是一个可动画属性)
- anchorPoint
- cornerRadius
- transform
- zPosition
背景属性 Core Animation首先会渲染图层的背景。你可以为背景指定一个颜色。在OS X中,你也可以指定一个应用到背景内容的Core Image过滤器。图A-2显示了2个示例图层的版本。在左边的图层设置了backgroundColor属性,而右边的没有设置背景颜色。但有一个边框和一个应用在图层backgroundFilters属性上的挤压变形滤镜。
文章图片
有背景颜色的图层 背景滤镜被应用到位于图层背后的内容上。该内容主要是由父图层的内容组成。你可能使用一个背景滤镜让前景图层内容突出;比如说,通过应用一个模糊滤镜。
下面的CALayer属性会影响图层的背景显示:
- backgroundColor
- backgroundFilters(iOS不支持此属性)
图层内容 如果图层有任何的内容,该内容将被渲染在背景颜色的上面。你可以通过直接设置一副位图提供图层内容,或使用一个代理指定内容,或是子类化图层并直接绘制内容。并且你可以使用许多不同的绘图技术(包括Quartz、OpernGL、Quartz合成器)提供内容。图A-3显示了一个示例图层,它的内容是通过直接设置一副位图。位图内容由一个右下角是一个机器人图标的大透明空间构成。
文章图片
图层显示一副位图图片 带有圆角半径的图层不会自动裁剪它们的内容;然而,设置图层的masksToBounds属性为YES将引起图层裁减掉圆角以外的内容。
下面的CALayer属性影响一个图层的内容的显示:
- contents
- contentsGravity
- masksToBounds
文章图片
显示子层内容的图层 设置图层的masktSToBounds属性为YES将引起超出图层边界的任何子图层被裁减掉。
【iOS绘制与渲染--图层属性】下面的CALayer属性将影响一个图层的子图层的显示:
- sublayers
- masksToBounds
- sublayerTransform
文章图片
显示边框属性内容的图层 下面的CALayer属性将影响图层边框的显示
- borderColor
- borderWidth
滤镜属性 在OS X平台,或许你可能为图层内容应用滤镜效果。使用自定义的合成滤镜指定图层的内容与它的底部图层内容的混合方法。图A-6显示了一个应用了Core Image的分色器滤镜图层。
文章图片
显示滤镜属性的图层 下面的CALayer属性指定一个图层内容的滤镜:
- filters
- compositingFilter
阴影属性 图层可以显示阴影效果,并且可以配置阴影的形状、透明度、偏移、模糊半径。如果你不指定一个自定义的阴影形状,阴影是在图层的部分基础上,阴影并不是完全透明的。图A-7显示了相同图层应用红色阴影的多种不同版本的结果。
左边和中间的版本包含一个背景颜色,所以阴影仅是显示在图层边框的周围。然而,右边的版本不包括背景颜色,在这种情况下,阴影将应用于图层的内容、边框以及子图层。
文章图片
显示阴影属性的图层 下面的CALayer属性影响图层阴影的显示:
- shadowColor
- shadowOffset
- shadowOpacity
- shadowRadius
- shaodwPath
不透明度属性 一个图层的不透明度属性决定了多少背景内容透过图层被显示。图A-8显示了一个示例图层,它的不透明度被设置为0.5。这将允许部分背景图片穿透显示出来。
文章图片
包含不透明度属性的图层 下面的CALyaer属性指定图层的不透明度:
- opacity
文章图片
合成蒙版属性的图层 下面的CALayer属性用于指定一个图层的蒙版
- mask
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 2020-04-07vue中Axios的封装和API接口的管理
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- 我和你之前距离
- iOS中的Block