<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 使用圖層 ????首先我們來創建一個簡單的項目,來操縱一些`layer`的屬性。打開Xcode,使用*Single View Application*模板創建一個工程。 ????在屏幕中央創建一個小視圖(大約200 X 200的尺寸),當然你可以手工編碼,或者使用Interface Builder(隨你方便)。確保你的視圖控制器要添加一個視圖的屬性以便可以直接訪問它。我們把它稱作`layerView`。 ????運行項目,應該能在淺灰色屏幕背景中看見一個白色方塊(圖1.3),如果沒看見,可能需要調整一下背景window或者view的顏色 ![圖1.3](https://zsisme.gitbooks.io/ios-/content/chapter1/1.3.jpeg "圖1.3") 圖1.3 灰色背景上的一個白色`UIView` ????這并沒有什么令人激動的地方,我們來添加一個色塊,在白色方塊中間添加一個小的藍色塊。 ????我們當然可以簡單地在已經存在的`UIView`上添加一個子視圖(隨意用代碼或者IB),但這不能真正學到任何關于圖層的東西。 ????于是我們來創建一個`CALayer`,并且把它作為我們視圖相關圖層的子圖層。盡管`UIView`類的接口中暴露了圖層屬性,但是標準的Xcode項目模板并沒有包含Core Animation相關頭文件。所以如果我們不給項目添加合適的庫,是不能夠使用任何圖層相關的方法或者訪問它的屬性。所以首先需要添加QuartzCore框架到Build Phases標簽(圖1.4),然后在vc的.m文件中引入庫。 ![圖1.4](https://zsisme.gitbooks.io/ios-/content/chapter1/1.4.jpeg "圖1.4") 圖1.4 把QuartzCore庫添加到項目 ????之后就可以在代碼中直接引用`CALayer`的屬性和方法。在清單1.1中,我們用創建了一個`CALayer`,設置了它的`backgroundColor`屬性,然后添加到`layerView`背后相關圖層的子圖層(這段代碼的前提是通過IB創建了`layerView`并做好了連接),圖1.5顯示了結果。 清單1.1 給視圖添加一個藍色子圖層 ~~~ #import "ViewController.h" #import @interface ViewController () @property (nonatomic, weak) IBOutlet UIView *layerView; ? @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //create sublayer CALayer *blueLayer = [CALayer layer]; blueLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f); blueLayer.backgroundColor = [UIColor blueColor].CGColor; //add it to our view [self.layerView.layer addSublayer:blueLayer]; } @end ~~~ ![圖1.5](https://zsisme.gitbooks.io/ios-/content/chapter1/1.5.jpeg "圖1.5") 圖1.5 白色`UIView`內部嵌套的藍色`CALayer` ????一個視圖只有一個相關聯的圖層(自動創建),同時它也可以支持添加無數多個子圖層,從清單1.1可以看出,你可以顯示創建一個單獨的圖層,并且把它直接添加到視圖關聯圖層的子圖層。盡管可以這樣添加圖層,但往往我們只是見簡單地處理視圖,他們關聯的圖層并不需要額外地手動添加子圖層。 ????在Mac OS平臺,10.8版本之前,一個顯著的性能缺陷就是由于用了視圖層級而不是單獨在一個視圖內使用`CALayer`樹狀層級。但是在iOS平臺,使用輕量級的`UIView`類并沒有顯著的性能影響(當然在Mac OS 10.8之后,`NSView`的性能同樣也得到很大程度的提高)。 ????使用圖層關聯的視圖而不是`CALayer`的好處在于,你能在使用所有`CALayer`底層特性的同時,也可以使用`UIView`的高級API(比如自動排版,布局和事件處理)。 ????然而,當滿足以下條件的時候,你可能更需要使用`CALayer`而不是`UIView`: * 開發同時可以在Mac OS上運行的跨平臺應用 * 使用多種`CALayer`的子類(見第六章,“特殊的圖層“),并且不想創建額外的`UIView`去包封裝它們所有 * 做一些對性能特別挑剔的工作,比如對`UIView`一些可忽略不計的操作都會引起顯著的不同(盡管如此,你可能會直接想使用OpenGL繪圖) ????但是這些例子都很少見,總的來說,處理視圖會比單獨處理圖層更加方便。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看