iOS UIView、CALayer

兩者的關(guān)系

在創(chuàng)建UIView對象時,UIView內(nèi)部會自動創(chuàng)建一個圖層(CALayer對象),而當(dāng)UIView對象需要顯示到屏幕上時,會調(diào)用drawRect:方法進(jìn)行繪圖,然后把內(nèi)容都繪制到圖層上,繪圖完畢,系統(tǒng)就會將圖層展示在屏幕上。
總得來說,UIView并不具有顯示的功能,是它內(nèi)部的層來完成顯示這一項(xiàng)工作,但VIew有響應(yīng)事件的功能。

CALayer的基本使用

通過操作UIView對象里的CALayer對象,我們可以很方便地調(diào)整UIView的一些外觀屬性。比如

  • 陰影
  • 邊框
  • 圓角等等

UIView和UIImageView在操作CALayer上的區(qū)別

  • 當(dāng)我們給UIImageView添加圓角時會發(fā)現(xiàn)圓角出來了但是顯示圖片的部分并沒有出現(xiàn)圓角

    image

    而當(dāng)我們給layer的masksToBounds屬性設(shè)置為yes后才會顯示出我們要的效果

    image
  • 而UIView設(shè)置圓角是不需要將masksToBounds屬性設(shè)置為YES的

  • 兩者的區(qū)別在于 —— 對View進(jìn)行圓角的設(shè)置只會作用在layer圖層上,而展示Image又是在另一個圖層上,它是以CGImage的形式存儲在layer的contents屬性上,而將masksToBounds設(shè)置為YES是為了去掉View的根層邊界外的內(nèi)容。

UIView和CALayer的選擇

  • CALayer是定義在QuartzCore框架中的,CGImageRef,CGColorRef這兩種數(shù)據(jù)類型是定義在COreGraphics框架中的,而UIImage和UIColor是定義在UIKit框架的
  • QuartzCore框架和COreGraphics框架是可以跨平臺使用的,在IOS和Mac OS X上都可以使用,但是UIKit只能在IOS中使用
  • CALayer可以做出跟UIView一樣的效果,但是由于UIVIew繼承于UIResponder,可以處理事件的響應(yīng),而CALayer不可以
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS程序中,視圖可以用UIView和CALayer來創(chuàng)建,下面就以它們?yōu)閷?dǎo)火索來進(jìn)一步學(xué)習(xí)總結(jié)iOS程序顯示性能...
    Sweet丶閱讀 2,021評論 0 7
  • 一、概念: UIView不具備顯示功能,擁有顯示功能的是它內(nèi)部的圖層即CALayer屬性 當(dāng)UIView需要顯示到...
    金字塔的AI閱讀 292評論 0 0
  • 一 關(guān)于CoreAnimation CoreAnimation是蘋果提供的一套基于繪圖的動畫框架,下圖是官方文檔中...
    路飛_Luck閱讀 5,276評論 3 23
  • 在 iOS 中,所有的 view 都是由一個底層的 layer 來驅(qū)動的。view 和它的 layer 之間有著緊...
    zhangkaizhong閱讀 261評論 0 1
  • 1.響應(yīng)事件 首先從繼承關(guān)系來看,UIView繼承于UIResponse,而CALayer繼承于NSObject。...
    安灼拉1024閱讀 1,831評論 1 7

友情鏈接更多精彩內(nèi)容