詳解 CALayer 和 UIView 的區(qū)別和聯(lián)系

1.首先UIView可以響應(yīng)事件鹤啡,Layer不可以.

UIKit使用UIResponder作為響應(yīng)對(duì)象枯芬,來(lái)響應(yīng)系統(tǒng)傳遞過(guò)來(lái)的事件并進(jìn)行處理绍坝。UIApplication宵荒、UIViewController汁雷、UIView、和所有從UIView派生出來(lái)的UIKit類(包括UIWindow)都直接或間接地繼承自UIResponder類报咳。
在 UIResponder中定義了處理各種事件和事件傳遞的接口, 而 CALayer直接繼承 NSObject侠讯,并沒(méi)有相應(yīng)的處理事件的接口。
下面列舉一些處理觸摸事件的接口
– touchesBegan:withEvent:

– touchesMoved:withEvent:

– touchesEnded:withEvent:

– touchesCancelled:withEvent:

其實(shí)還有一些運(yùn)動(dòng)和遠(yuǎn)程控制事件等等暑刃,這里就不一一列舉了厢漩。
下面的兩篇文章詳細(xì)介紹了 iOS 事件的處理和傳遞
參考鏈接:
http://blog.csdn.net/chun799/article/details/8223612

http://yishuiliunian.gitbooks.io/implementate-tableview-to-understand-ios/content/uikit/1-1-2.html

3.UIView主要是對(duì)顯示內(nèi)容的管理而 CALayer 主要側(cè)重顯示內(nèi)容的繪制。

我在 UIView 和 CALayer 分別重寫(xiě)了父類的方法岩臣。
1
2

[UIView drawRect:rect]
//UIView

[CALayer display]
//CALayer

然后我在上面兩個(gè)方法加了斷點(diǎn)溜嗜,可以看到如下的執(zhí)行。


1440656715211434.png

可以看到 UIView 是 CALayer 的CALayerDelegate架谎,我猜測(cè)是在代理方法內(nèi)部[UIView(CALayerDelegate) drawLayer:inContext]調(diào)用 UIView 的 DrawRect方法炸宵,從而繪制出了 UIView 的內(nèi)容.

總結(jié)
總接來(lái)說(shuō)就是如下幾點(diǎn):
每個(gè) UIView 內(nèi)部都有一個(gè) CALayer 在背后提供內(nèi)容的繪制和顯示,并且 UIView 的尺寸樣式都由內(nèi)部的 Layer 所提供谷扣。兩者都有樹(shù)狀層級(jí)結(jié)構(gòu)土全,layer 內(nèi)部有 SubLayers,View 內(nèi)部有 SubViews.但是 Layer 比 View 多了個(gè)AnchorPoint

在 View顯示的時(shí)候抑钟,UIView 做為 Layer 的 CALayerDelegate,View 的顯示內(nèi)容由內(nèi)部的 CALayer 的 display

CALayer 是默認(rèn)修改屬性支持隱式動(dòng)畫(huà)的涯曲,在給 UIView 的 Layer 做動(dòng)畫(huà)的時(shí)候,View 作為 Layer 的代理在塔,Layer 通過(guò) actionForLayer:forKey:向 View請(qǐng)求相應(yīng)的 action(動(dòng)畫(huà)行為)

layer 內(nèi)部維護(hù)著三分 layer tree,分別是 presentLayer Tree(動(dòng)畫(huà)樹(shù)),modeLayer Tree(模型樹(shù)), Render Tree (渲染樹(shù)),在做 iOS動(dòng)畫(huà)的時(shí)候幻件,我們修改動(dòng)畫(huà)的屬性,在動(dòng)畫(huà)的其實(shí)是 Layer 的 presentLayer的屬性值,而最終展示在界面上的其實(shí)是提供 View的modelLayer

兩者最明顯的區(qū)別是 View可以接受并處理事件蛔溃,而 Layer 不可以

轉(zhuǎn)載:http://www.cocoachina.com/ios/20150828/13244.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绰沥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贺待,更是在濱河造成了極大的恐慌徽曲,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麸塞,死亡現(xiàn)場(chǎng)離奇詭異秃臣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)奥此,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弧哎,“玉大人,你說(shuō)我怎么就攤上這事稚虎〕纺郏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蠢终,是天一觀的道長(zhǎng)序攘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)寻拂,這世上最難降的妖魔是什么程奠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮祭钉,結(jié)果婚禮上梦染,老公的妹妹穿的比我還像新娘。我一直安慰自己朴皆,他們只是感情好帕识,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著遂铡,像睡著了一般肮疗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扒接,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天伪货,我揣著相機(jī)與錄音,去河邊找鬼钾怔。 笑死碱呼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宗侦。 我是一名探鬼主播愚臀,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼矾利!你這毒婦竟也來(lái)了姑裂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤男旗,失蹤者是張志新(化名)和其女友劉穎舶斧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體察皇,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茴厉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矾缓。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡师痕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出而账,到底是詐尸還是另有隱情,我是刑警寧澤因篇,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布泞辐,位于F島的核電站,受9級(jí)特大地震影響竞滓,放射性物質(zhì)發(fā)生泄漏咐吼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一商佑、第九天 我趴在偏房一處隱蔽的房頂上張望锯茄。 院中可真熱鬧,春花似錦茶没、人聲如沸肌幽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喂急。三九已至,卻和暖如春笛求,著一層夾襖步出監(jiān)牢的瞬間廊移,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工探入, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狡孔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓蜂嗽,卻偏偏與公主長(zhǎng)得像苗膝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子植旧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 前言 前面發(fā)了一篇iOS 面試的文章荚醒,在說(shuō)到 UIView 和 CALayer 的區(qū)別和聯(lián)系的時(shí)候,被喵神指出沒(méi)有...
    kissGod閱讀 57,141評(píng)論 23 268
  • 1.首先UIView可以響應(yīng)事件隆嗅,Layer不可以. UIKit使用UIResponder作為響應(yīng)對(duì)象界阁,來(lái)響應(yīng)系統(tǒng)...
    iOS小飛羊閱讀 446評(píng)論 0 3
  • 前言 前面發(fā)了一篇iOS 面試的文章,在說(shuō)到 UIView 和 CALayer 的區(qū)別和聯(lián)系的時(shí)候胖喳,被喵神指出沒(méi)有...
    Mz楓閱讀 755評(píng)論 0 4
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果泡躯,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,465評(píng)論 6 30
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果较剃,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜咕别,今天將帶大家一窺iOS動(dòng)畫(huà)全貌。在這里你可以看...
    F麥子閱讀 5,096評(píng)論 5 13