首先UIView可以響應(yīng)事件既琴,layer不可以占婉。
1、在屏幕上能看得見(jiàn)摸得著的東西基本上都是UIView甫恩,如:按鈕锐涯、文本標(biāo)簽、文本輸入框填物,圖標(biāo)等等,都是UIView霎终;
2滞磺、其實(shí)UIView之所以能顯示在屏幕上,完全是因?yàn)樗鼉?nèi)部的一個(gè)圖層莱褒;
3击困、當(dāng)UIView需要顯示到屏幕上時(shí),會(huì)調(diào)用drawRect:方法進(jìn)行繪圖广凸,并且會(huì)將所有內(nèi)容繪制在自己的圖層上阅茶,繪圖完畢后,系統(tǒng)會(huì)將圖層拷貝到屏幕上谅海,于是UIView的顯示就完成了脸哀;
4、UIView本身不具備顯示的功能扭吁,是它內(nèi)部的層才有顯示功能撞蜂,對(duì)比CALayer,UIView多了一個(gè)事件處理的功能侥袜;
5蝌诡、如果顯示出來(lái)的東西需要跟用戶(hù)交互的話(huà),用UIView枫吧,如果不需要跟用戶(hù)交互浦旱,用UIView和CALayer都可以;
6九杂、當(dāng)然颁湖,CALayer的性能會(huì)高一點(diǎn)宣蠕,因?yàn)樗倭耸录幚淼墓δ埽p量級(jí)爷狈;
7植影、所有非RootLayer,也就是手動(dòng)創(chuàng)建的CALayer對(duì)象涎永,都存在著隱式動(dòng)畫(huà)思币;
8、CAL ayer有position和anchorPoint羡微;
UIView封裝的動(dòng)畫(huà)執(zhí)行完畢之后不會(huì)反彈谷饿,即如果是通過(guò)CALayer核心動(dòng)畫(huà)改變layer的位置狀態(tài),表面上看雖然已經(jīng)改變了妈倔,但是實(shí)際上它的位置是沒(méi)有改變的博投。
CALayer有兩個(gè)非常重要的屬性:position和anchorPoint。
其中position用來(lái)設(shè)置CALayer在父層中的位置盯蝴,以父層的左上角為原點(diǎn)(0,0)毅哗。
anchorPoint:稱(chēng)為“定位點(diǎn)” “錨點(diǎn)”,決定著CALayer身上的哪個(gè)點(diǎn)會(huì)在position屬性所指的位置捧挺,以自己的左上角為原點(diǎn)(0,0)虑绵,它的x,y取值范圍都是0~1,默認(rèn)是(0.5, 0.5)闽烙。