CALayer基础

CALayer基础,第1张

概述上一篇文章中初步介绍了Core Animation框架,从中我们能发现图层树是其中的最基础和核心的概念。那么本文将会介绍最基础的CALayer,通过其中的一些基本属性实现基础的视觉效果。 寄宿图 俗话说一图胜千言,图片能给用户带来文字更好的视觉效果和更清晰的信息表达。在日常编写代码的过程中对于图片的处理使用最多的就是UIImageView视图控件。其实CALayer中的寄宿图也能胜任这项任务,其中

上一篇文章中初步介绍了Core Animation框架,从中我们能发现图层树是其中的最基础和核心的概念。那么本文将会介绍最基础的CALayer,通过其中的一些基本属性实现基础的视觉效果。

寄宿图

俗话说一图胜千言,图片能给用户带来文字更好的视觉效果和更清晰的信息表达。在日常编写代码的过程中对于图片的处理使用最多的就是UIImageVIEw视图控件。其实CALayer中的寄宿图也能胜任这项任务,其中使用到的属性就是寄宿图contents。该属性定义如下:

@property(strong) ID contents;

contents的属性类型是ID,这意味着该属性可以被任意赋值。但是在现实编码的过程中该属性只会处理CGImage对象,其余的赋值 *** 作得到的结果都只会得到空白图层显示。之所以会如此怪异是因为在macOS的Cocoa框架中contents是可以接受CGImage和NSImage,而iOS的Cocoa touch框架中其实接受的是一个指向CGImage对象的结构化指针CGImageRef。加载图形的代码与效果:

layer = CALayer()vIEwForLayer = UIVIEw.init(frame: CGRect.init(x: 50,y: 50,wIDth: self.vIEw.bounds.wIDth - 100,height: self.vIEw.bounds.height/2))layer.frame = vIEwForLayer.boundslayer.contents = UIImage.init(named: "YiXiu")?.cgImagevIEwForLayer.layer.addSublayer(layer)self.vIEw.addSubvIEw(vIEwForLayer)

CALayer中添加图片的方式与UIImageVIEw的 *** 作一样的简单。不过上图的显示效果不是很理想有很明显,这个现象在UIImageVIEw中也会经常遇到,因此这里当然也有类似的处理方法。与VIEw中的contentMode对应CALayer有一个contentsGravity,后者是一个Nsstring类型的枚举而前者是一个UIKit类型的枚举。contentsGravity枚举的可选值:

kCAGravityCenter

kCAGravitytop

kCAGravityBottom

kCAGravityleft

kCAGravityRight

kCAGravitytopleft

kCAGravitytopRight

kCAGravityBottomleft

kCAGravityBottomright

kCAGravityResize

kCAGravityResizeAspect

kCAGravityResizeAspectFill

//设置居中layer.contentsGravity = kCAGravityResizeAspect

图层阴影

iOS系统中常见的一个特性就是阴影,阴影在设计中的目的就是强调图层的景深显示图层的优先级。实现阴影效果的属性为:shadowOpacityshadowcolorshadowOffsetshadowRadiusshadowPath,分别对应阴影的透明度、阴影颜色、阴影偏移、阴影圆角、阴影形状。最常用的是前面四个,最后一个shadowPath是在开发人员提前知道阴影形状时用来提过对图层阴影计算效率的。

//任意图层的透明度取值范围为0~1的浮点layer.shadowOpacity = 1//阴影的偏移量layer.shadowOffset = CGSize.init(wIDth: 30,height: 30)//阴影的圆角值layer.shadowRadius = 10//阴影的颜色layer.shadowcolor = UIcolor.gray.cgcolor

图层边框

CALayer存在一个外框,我们可以通过设置边框的宽度的颜色来实现自定义外观。具体的设置 *** 作:

layer.borderWIDth = 2layer.bordercolor = UIcolor.blue.cgcolor

其他属性

圆角矩形是iOS设计中最常使用的设计美学,CALayer中的圆角设置:

vIEwForLayer.layer.cornerRadius = 10.0

CALayer中的透明度设置:

layer.opacity = 0.5;

CALayer中的背景色设置:

layer.backgroundcolor = UIcolor.red.cgcolor

CALayer中设置超出内容的显示:

layer.masksToBounds = true

注意:当masksToBounds设置为true的时候图层会被截取,然后圆角设置就导致失败。

总结

以上是内存溢出为你收集整理的CALayer基础全部内容,希望文章能够帮你解决CALayer基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1069158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存