我在界面構建器中創建了一個NSScrollView,它具有可以編程方式添加並從中刪除的可變數量的半獨特NSView。當我將子視圖添加到documentView時,它們出現在左下角而不是左上角。我發現你可以檢查isFlipped bool來確定視圖的座標系是否翻轉過來,但是我找不到將它設置爲翻轉的方法。如何翻轉NSView的座標系?
任何人都知道我錯過了什麼?
我在界面構建器中創建了一個NSScrollView,它具有可以編程方式添加並從中刪除的可變數量的半獨特NSView。當我將子視圖添加到documentView時,它們出現在左下角而不是左上角。我發現你可以檢查isFlipped bool來確定視圖的座標系是否翻轉過來,但是我找不到將它設置爲翻轉的方法。如何翻轉NSView的座標系?
任何人都知道我錯過了什麼?
在你的NSView子類,覆蓋isFlipped方法:
isFlipped返回YES,如果接收 用途翻轉繪製座標或NO 如果它使用本地座標。
- (BOOL)isFlipped
討論的默認實現 ;否;使用 翻轉座標的子類應該覆蓋 此方法返回YES。
對於那些希望這樣做的雨燕人在這裏是你在你的自定義類如何重寫:
class FlippedView: NSView {
override var flipped:Bool {
get {
return true
}
}
}
你可以做什麼沒有繼承? – yukas 2014-12-09 22:28:47
的想法是,每一個人觀點都有自己的繪畫本身(例如,使用人如果你突然翻轉了它的座標平面(光柵可能沒問題,而路徑可能顛倒過來,計算可能會把東西置於屏幕外等等),這可能會變得非常不可靠。所以它不可設置,但子類可以指定isFlipped
,因爲它們應該明確知道視圖是如何繪製的。
子類也可以使它可以設置,但他們必須期望它隨時改變。
至於代碼,這裏的Jay's answer在斯威夫特3:
class FlippedView: NSView {
override var isFlipped: Bool { return true }
}
對於我們這些誰是有點慢,您將在h和.m文件的截斷的例子闡明瞭這一點? – 2016-12-14 21:45:49