2013-06-25 83 views

回答

4

bounds.origin控制圖層座標系的原點相對於其上層圖層的框架。改變它有兩個可見的效果:

  1. 層的子層的位置。例如,當您滾動UIScrollView時,滾動視圖不會更改其子視圖的框架。它只是更改其bounds.origin。我建議設置一個帶有滾動視圖的玩具應用程序,並使用定時器或其他觸發器來執行NSLog("scroll view bounds = %@", NSStringFromCGRect(scrollView.bounds));,以瞭解發生了什麼。

  2. 圖形上下文座標系的原點drawInContext:。通常你會在視圖的drawRect:方法中看到這種效果。您的CGContext裏面的drawRect:已被翻譯self.bounds.origin

您可能會發現它有助於瞭解「View Geometry and Coordinate Systems」 in the View Programming Guide for iOS「Layer Objects Define Their Own Geometry」 in the Core Animation Programming Guide,但真的沒有人有界限起源的很好的討論。

+0

您給出的描述是frame.origin。讓我知道如果我錯過了什麼。 –

+0

'frame.origin'影響圖層在其上層的位置。 'bounds.origin'會影響圖層子圖層和內容的位置。 –

+1

您對#2錯誤。一個圖層的bounds.origin不會影響其內容的位置,而只會影響其子圖層的位置。例如,如果將CGImage分配給layer.contents,然後偏移bounds.origin,圖像將不會移動。 – algal

1

更改邊界矩形會更改圖層自身座標系中內容的位置和大小。改變框架(或位置)可以改變圖層在其超級圖層座標系中的位置。通常你只想改變框架,而不是邊界。

相關問題