2009-04-18 115 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 } 
}