Core Animation:UIView和CALayer

2016-02-22  本文已影响85人  黄龙辉

概念:

关系:

每一个UIView都持有一个CALayer实例的图层属性。视图需要创建并管理这个图层。以确保当子视图被添加或者移除时,子视图的图层也对应的从图层树中被添加或者移除。而CALayer才是真正用来在屏幕上显示和处理动画的。UIView仅仅是对它的一个封装,并提供了Core Animation底层方法的高级接口。

iOS不用一个简单的层级处理UIView和CALayer的主要原因是为了将职责分离,这样有利于代码的复用。例如,Mac OS基于鼠标、键盘和iOS基于多点触控在实现上有着本质的区别。但绘图、布局和动画,却是两个平台可以共用的地方。通过分离,就可以让两个平台共享绘图、布局和动画的实现。

示例:

可以往视图中添加子视图,或者往视图所持有的图层,添加子图层。

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 40, 300, 300)];
view.backgroundColor = [UIColor greenColor];
[self.view addSubview:view];

CALayer *subLayer = [[CALayer alloc] init];
subLayer.frame = CGRectMake(0, 0, 80, 80);
subLayer.backgroundColor = [UIColor blueColor].CGColor;
[view.layer addSublayer:subLayer];

效果如下图所示:

往视图的图层上增加子图层.JPEG
上一篇 下一篇

猜你喜欢

热点阅读