永发信息网

ios uiimage和calayer 哪个好

答案:1  悬赏:60  手机版
解决时间 2021-02-14 21:38
ios uiimage和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);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
本人12届山东美术艺术生,联考267,文化分约
荣成市卫生和计划生育局地址在什么地方,我要
已知函数y=ax的二次方+bx+c的图像y的最小值为
防冻液多久更换
我是一名不出名的大学的学生,学的是播音主持
男主角有一个系统可以穿越到新警察故事系列电
霍城县地址在哪,我要去那里办事
水运工程开标后,在确定中标人之前,招标人不
电动晾衣架十大排名榜
我买的钻戒750 18k金do0.04 do0.05这款戒指回
襄阳欧莱康涂料有限公司地址在哪,我要去那里
联想笔记本卖废品多少钱
现代名图仪表盘上同时出现三个图标是怎么回事
【相组词】什么相组词
高一,理科,有哪些好的卷子,推荐推荐呗
推荐资讯
什么是”染色排除法”?
王源的特点
御极鹿苑地址有知道的么?有点事想过去
【利器盒】以下对利器盒的要求哪些是正确的?(
喝过姜茶能吃猕猴桃吗?
下列句子中,加下划线的词语使用恰当的一句是
汽车有块漆刮蹭了,长时间没管生锈了,怎么办
光滑斜面倾角为α,如图所示,一小球在斜面上A
求一篇有关畜牧方面的社会实践报告
什么是股神
我有车有房有妻有儿有女有事业,但我为什么就
【上限(下限)频率公式fH(fL)=1/(2*pi*R*C) 中
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?