我在界面构建器中创建了一个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