国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

iOS開(kāi)發(fā)日記12-CALayer和UIView

2019-11-14 18:25:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

今天博主有一個(gè)內(nèi)容繪制的需求,遇到了一些困難點(diǎn),在此和大家分享,希望能夠共同進(jìn)步.

今天和大家分享一下CALayer和UIView的區(qū)別:

1.UIKit使用UIResponder作為響應(yīng)對(duì)象,來(lái)響應(yīng)系統(tǒng)傳遞過(guò)來(lái)的事件并進(jìn)行處理。UIapplication、UIViewController、UIView、和所有從UIView派生出來(lái)的UIKit類(lèi)(包括UIWindow)都直接或間接地繼承自UIResponder類(lèi).

在 UIResponder中定義了處理各種事件和事件傳遞的接口, 而 CALayer直接繼承 NSObject,并沒(méi)有相應(yīng)的處理事件的接口,兩者最明顯的區(qū)別是 View可以接受并處理事件,而 Layer 不可以

2.一個(gè) Layer 的 frame 是由它的 anchorPoint,position,bounds,和 transform 共同決定的,而一個(gè) View 的 frame 只是簡(jiǎn)單的返回 Layer的 frame,同樣 View 的 center和 bounds 也是返回 Layer 的一些屬性.

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

3.每個(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

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

4.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à)行為),對(duì)于每一個(gè) UIView 都有一個(gè) layer,把這個(gè) layer 且稱(chēng)作RootLayer,而不是 View 的根 Layer的叫做 非 RootLayer。我們對(duì)UIView的屬性修改時(shí)時(shí)不會(huì)產(chǎn)生默認(rèn)動(dòng)畫(huà),而對(duì)單獨(dú) layer屬性直接修改會(huì),這個(gè)默認(rèn)動(dòng)畫(huà)的時(shí)間缺省值是0.25s

5.再和大家分享一下UIView轉(zhuǎn)換UIImage的一個(gè)小技巧

+ (UIImage*) imageWithUIView:(UIView*) view{  UIGraphicsBeginImageContext(view.bounds.size);  CGContextRef currnetContext = UIGraphicsGetCurrentContext();  [view.layer renderInContext:currnetContext];  UIImage* image = UIGraphicsGetImageFromCurrentImageContext();  UIGraphicsEndImageContext();  return image;}

 


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 内丘县| 宁都县| 许昌县| 沙田区| 乐都县| 平乐县| 灌阳县| 阿荣旗| 乳山市| 临颍县| 阳西县| 海晏县| 资中县| 河北省| 竹北市| 玛沁县| 永新县| 山阴县| 改则县| 额济纳旗| 诸暨市| 玉环县| 民县| 雷山县| 禄丰县| 灵丘县| 彭泽县| 新宁县| 年辖:市辖区| 富源县| 汨罗市| 长春市| 邳州市| 虎林市| 常宁市| 巴东县| 勃利县| 涟水县| 扎赉特旗| 晋中市| 泽普县|