这里我们先看看下面的效果:
UIView的继承结构如下:UIResponder : NSObject。
因此可以看出UIView是可以响应事件的。而CALayer是继承NSObjrct的。所以一般来说UIView都是用来响应用户事件。UIView是用来显示界面,而CALayer是用来绘制界面的。每个UIView都会有一个CALayer与之相对应。同时CALayer还可以实现很多UIView不容易实现的功能。
常见的有如下属性:边框宽度: borderWidth 边框颜色:borderColor 圆角半径:cornerRadius
阴影偏移量:shadowOffset 超出部分裁剪:masksToBounds
锚点以及3D旋转效果的实现:
核心代码:
self.iconView.layer.anchorPoint = CGPointMake(0, 1);
self.iconView.layer.transform = CATransform3DMakeRotation(M_PI_4*slider.value, 0, 1, 0);
首先要明白锚点的作用:
3D旋转的时候 有一个旋转轴的问题。默认这个CATransform3DMakeRotation 后面三个跟的是一个向量。默认锚点是在整个view的中位置。为(0.5 0.5 )因此这里如果想要沿着边边旋转,必须要设置新的锚点。
同时由于锚点的位置改变了,所以整个图片的frame的位置也改变了。Frame 的位置是依赖于锚点的。