永发信息网

uiview和calayer的区别

答案:1  悬赏:30  手机版
解决时间 2021-03-16 06:15
uiview和calayer的区别
最佳答案
1.UIView 是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部 分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等, 实际上内部都是在访问它所包含的CALayer的相关属性。

2.UIView有个layer属性,可以返回它的主CALayer实例,UIView有一个layerClass方法,返回主layer所使用的类,UIView的子类,可以通过重载这个方法,来让UIView使用不同的CALayer来显示,例如通过
1
- (class) layerClass {
2
return ([CAEAGLLayer class]);
3
}
使某个UIView的子类使用GL来进行绘制。

3.UIView的CALayer类似UIView的子View树形结构,也可以向它的layer上添加子layer,来完成某些特殊的表示。例如下面的代码
1
grayCover = [[CALayer alloc] init];
2
grayCover.backgroundColor = [[[UIColor blackColor] colorWithAlphaComponent:0.2] CGColor];
3
[self.layer addSubLayer: grayCover];
会在目标View上敷上一层黑色的透明薄膜。

4.UIView的layer树形在系统内部,被系统维护着三份copy(这段理解有点吃不准)。
第一份,逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份。
第二份,动画树,这是一个中间层,系统正在这一层上更改属性,进行各种渲染操作。
第三份,显示树,这棵树的内容是当前正被显示在屏幕上的内容。
这三棵树的逻辑结构都是一样的,区别只有各自的属性。

5.动画的运作
UIView 的主layer以外(我觉得是这样),对它的subLayer,也就是子layer的属性进行更改,系统将自动进行动画生成,动画持续时间有个缺省时间, 个人感觉大概是0.5秒。在动画时间里,系统自动判定哪些属性更改了,自动对更改的属性进行动画插值,生成中间帧然后连续显示产生动画效果。

6.坐标系系统(对position和anchorPoint的关系还是犯晕)
CALayer 的坐标系系统和UIView有点不一样,它多了一个叫anchorPoint的属性,它使用CGPoint结构,但是值域是0~1,也就是按照比例来设 置。这个点是各种图形变换的坐标原点,同时会更改layer的position的位置,它的缺省值是{0.5, 0.5},也就是在layer的中央。
某layer.anchorPoint = CGPointMake(0.f, 0.f);
如果这么设置,layer的左上角就会被挪到原来的中间的位置,
加上这样一句就好了
某layer.position = CGPointMake(0.f, 0.f);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我常常会瞧见乡下人吃晚饭的情景。改为拟人句
李中陵村这个地址在什么地方,我要处理点事
文津世家停车场在哪里啊,我有事要去这个地方
现在有什么公益工作?比如支教?
孩子吐了后发烧,怎么回事
每天惠智慧便利店(新华店)地址有知道的么?有
我家的冬虫夏草让虫子全给吃了,我们发现时已
天津至涉县的4481次列车途径哪些站?
心艺美发专业造型烫染店(柳青北路店)地址有知
完璧还珠是什么意思
中国所有省份名字简称
DNF多长时间没上才会变归来啊
中槽我想知道这个在什么地方
国内 有哪些国产手机 有NFC功能的 能刷公交就
椒盐虾米怎么做
推荐资讯
手绘透视怎么老画不准啊!能用尺子吗?
不同的水和乳液一起用不会过敏现象吧?
达木斯乡地址在什么地方,想过去办事
印象·米兰在什么地方啊,我要过去处理事情
现在手脚裂口子好疼怎么办
万丰市场在哪里啊,我有事要去这个地方
新历1998年10月30是农历几号
国考申论在线答疑 你好,答题时分条写的情况
黑山在哪?
去参观学习,的新闻通讯稿
16岁女生暑期工做什么好?
在网上转发暴力视频现在被抓进去了会不会判刑
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?