动画

iOS Core Animation(二)- 属性

2016-12-13  本文已影响100人  莫须有恋

UIView三个重要的布局属性:frame,bounds,center
CAlayer与之对应的属性:frame,bounds,position

UIView和CALayer的坐标系

视图的frame,bounds和center属性仅仅是存取方法,当操作视图的frame,实际上是改变位于视图下方CALayer的frame,不能够独立于图层之外改变视图的frame

视图或者图层的frame是根据bounds,position和transform计算而来


旋转之后的视图和图层的frame
锚点(anchorPoint)

anchorPoint是CGPoint的属性,是图层的相对坐标默认坐标是(0.5,0.5)


改变anchorPoint的效果
坐标系

使用过UIView的相对坐标变换的方法,你就很容易理解与其对应的CALayer在不同图层的坐标系中相互转换的方法,这些方法可以把定义在一个图层坐标系下的点或者矩形转换成另一个图层坐标系下的点或者矩形.

- (CGPoint)convertPoint:(CGPoint)point fromLayer:(CALayer *)layer;
- (CGPoint)convertPoint:(CGPoint)point toLayer:(CALayer *)layer;
- (CGRect)convertRect:(CGRect)rect fromLayer:(CALayer *)layer;
- (CGRect)convertRect:(CGRect)rect toLayer:(CALayer *)layer;
翻转的几何结构(geometryFlipped)

在iOS中,图层的布局坐标系的原点是在图层的左上角。在iOS上通过设置geometryFlipped为YES,以为这它的子图层将会被垂直翻转,也就是将会沿着底部排版而不是通常的顶部
如果父视图使用了翻转变换,它的子视图内容(以及它对应的图层)将会被颠倒,设置子图层的geometryFlipped属性为YES可以修正。不推荐使用

Z坐标轴(zPosition和anchorPointZ)

CALayer存在于一个三维空间中,zPositon和anchorPointZ都是在Z轴上描述图层位置的浮点类型。zPosition最实用的功能是改变图层的显示顺序。
以我们的视角来看,zPosition越大就越靠近我们,就显示在上层

Hit Testing

CALayer不关心任何响应链事件,但是我们可以通过:-containsPoint:和-hitTest:

conrnerRadius

conrnerRadius设置图层角的曲率和maskToBounds配合使用

borderWidth和borderColor

borderWidth是绘制在图层边界里边的,而且在所有子视图之前,默认0
borderColor默认黑色

阴影
  • shadowColor :阴影的颜色
----注----
mask

mask:CALayer类型,定义父图层的部分可见区域,CALayer蒙板图层真正厉害的地方在于蒙板图不局限于静态图,任何有图层构成的都可以作为mask属性,这意味着你的蒙版可以通过代码甚至是动画实时生成

minificationFilter和magnificationFilter

设置layer的contents数据缩放拉伸时的描绘方式,minificationFilter用于缩小,magnificationFilter用于放大

opacity

UIView通过alpha属性确定视图的透明度,CALayer有一个等同的属性opacity。两个属性都将影响子层级的透明度。
如果你设置了图层的透明度,你希望它包含的整个图层树想一个整体一样透明,你可以通过下列方法达到效果:
1.设置Info.plist文件中的UIViewGroupOpacity为YES,缺点是会影响到整个应用
2.设置CALayer的一个
shouldRasterize属性,如果它被设置为YES,在应用透明度更改之前,图层及其子图层会被整合成一张整体的图片,为了启用shouldRasterize属性,我们设置了图层的rasterizationScale**属性,默认情况下是1,使用shouldRasterize时需要设置,防止出现Retina屏幕像素化的问题(shouldRasterize可以缓存图层内容,可以优化性能)

上一篇:iOS Core Animation(一)
下一篇:iOS Core Animation(三)

上一篇下一篇

猜你喜欢

热点阅读