我在界面构建器中创建了一个NSScrollView,它具有可变数量的半唯一NSView,可以通过编程方式添加和删除它。当我将subViews添加到documentView时,它们出现在左下角而不是左上角。我看到你可以检查isFlipped bool来判断视图的坐标系是否被翻转,但我找不到将其设置为翻转的方法。
任何人都知道我缺少什么?
答案 0 :(得分:46)
在NSView
子类中,覆盖isFlipped
:
isFlipped
一个布尔值,指示视图是否使用翻转坐标系。
声明
var isFlipped: Bool { get }
讨论
此属性的默认值为
false
,这会导致非翻转坐标系。[...]
如果您希望视图使用翻转坐标系,请覆盖此属性并返回
true
。
答案 1 :(得分:24)
对于任何希望在Swift中执行此操作的人,您可以在自定义类中覆盖:
class FlippedView: NSView {
override var flipped:Bool {
get {
return true
}
}
}
答案 2 :(得分:4)
这个想法是每个单独的视图都有自己的绘制方式(例如,使用人工计算的路径)如果你突然翻转它的坐标平面可能会变得非常不稳定(光栅可能很好,而路径可能会上升 - 下来,计算可能会把东西放在屏幕外等等。所以它不可设置,但是子类可以指定isFlipped
因为它们应该知道如何绘制视图。
子类也可以使其可设置,但是他们必须随时改变它。
至于代码, Swift 3 中的Jay's answer:
class FlippedView: NSView {
override var isFlipped: Bool { return true }
}
答案 3 :(得分:0)
自Carl Carlson asked起,这是Objective-C中的Jay's answer:
Sass
).h
@interface XYZFlippedView: NSView
- (BOOL) isFlipped;
@end
).m