上一篇文章中初步介绍了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系统中常见的一个特性就是阴影,阴影在设计中的目的就是强调图层的景深显示图层的优先级。实现阴影效果的属性为:shadowOpacity、shadowcolor、shadowOffset、shadowRadius、shadowPath,分别对应阴影的透明度、阴影颜色、阴影偏移、阴影圆角、阴影形状。最常用的是前面四个,最后一个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基础所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)