2009-04-18 117 views
22

我在界面構建器中創建了一個NSScrollView,它具有可以編程方式添加並從中刪除的可變數量的半獨特NSView。當我將子視圖添加到documentView時,它們出現在左下角而不是左上角。我發現你可以檢查isFlipped bool來確定視圖的座標系是否翻轉過來,但是我找不到將它設置爲翻轉的方法。如何翻轉NSView的座標系?

任何人都知道我錯過了什麼?

回答

38

在你的NSView子類,覆蓋isFlipped方法:

isFlipped返回YES,如果接收 用途翻轉繪製座標或NO 如果它使用本地座標。

- (BOOL)isFlipped

討論的默認實現 ;否;使用 翻轉座標的子類應該覆蓋 此方法返回YES。

+0

對於我們這些誰是有點慢,您將在h和.m文件的截斷的例子闡明瞭這一點? – 2016-12-14 21:45:49

21

對於那些希望這樣做的雨燕人在這裏是你在你的自定義類如何重寫:

class FlippedView: NSView { 
    override var flipped:Bool { 
     get { 
      return true 
     } 
    } 
} 
+5

你可以做什麼沒有繼承? – yukas 2014-12-09 22:28:47

1

的想法是,每一個人觀點都有自己的繪畫本身(例如,使用人如果你突然翻轉了它的座標平面(光柵可能沒問題,而路徑可能顛倒過來,計算可能會把東西置於屏幕外等等),這可能會變得非常不可靠。所以它不可設置,但子類可以指定isFlipped,因爲它們應該明確知道視圖是如何繪製的。

子類也可以使它可以設置,但他們必須期望它隨時改變。

至於代碼,這裏的Jay's answer斯威夫特3

class FlippedView: NSView { 
    override var isFlipped: Bool { return true } 
}