如何从顶部而不是从底部添加 NSButtons?
How do I add NSButtons from the top instead of from the bottom?
我目前正在构建一个导航左窗格,其中侧面的按钮是动态添加的。我有一个 NSView 子类可以促进这个
func addButton(_ service: String) {
let btn = NSButton()
btn.bezelStyle = .shadowlessSquare
btn.frame.size = NSSize(width: 48, height: 48)
btn.image = NSImage(named: service)
btn.imageScaling = .scaleAxesIndependently
btn.frame.origin = CGPoint(x: 0, y: self.currentY)
self.addSubview(btn)
self.currentY += 58
}
效果如愿,但按钮是从底部而不是顶部添加的:
Resulting App Screenshot
如何才能从顶部添加新按钮?
作为参考,这是我的故事板,其中 "Servi" 视图包含按钮。
Left Pane Storyboard
Y 在 macOS 上从底部到顶部(底部 为 0)。所以不要从 currentY
0 或 10 或任何你开始的地方开始。从 currentY
开始设置为比视图高度小一个按钮高度,然后每次 减 58 而不是添加。
所以,你会得到这样的结果:
但是如果你按照我描述的去做,你会得到这样的结果:
您可以翻转视图,使坐标系从左上角开始。只需创建一个新的 NSView 子类并覆盖 isFlipped
class FlippedView: NSView {
override var flipped:Bool {
get {
return true
}
}
}
然后将新按钮添加到 flippedview 的实例中。
我目前正在构建一个导航左窗格,其中侧面的按钮是动态添加的。我有一个 NSView 子类可以促进这个
func addButton(_ service: String) {
let btn = NSButton()
btn.bezelStyle = .shadowlessSquare
btn.frame.size = NSSize(width: 48, height: 48)
btn.image = NSImage(named: service)
btn.imageScaling = .scaleAxesIndependently
btn.frame.origin = CGPoint(x: 0, y: self.currentY)
self.addSubview(btn)
self.currentY += 58
}
效果如愿,但按钮是从底部而不是顶部添加的:
Resulting App Screenshot
如何才能从顶部添加新按钮?
作为参考,这是我的故事板,其中 "Servi" 视图包含按钮。
Left Pane Storyboard
Y 在 macOS 上从底部到顶部(底部 为 0)。所以不要从 currentY
0 或 10 或任何你开始的地方开始。从 currentY
开始设置为比视图高度小一个按钮高度,然后每次 减 58 而不是添加。
所以,你会得到这样的结果:
但是如果你按照我描述的去做,你会得到这样的结果:
您可以翻转视图,使坐标系从左上角开始。只需创建一个新的 NSView 子类并覆盖 isFlipped
class FlippedView: NSView {
override var flipped:Bool {
get {
return true
}
}
}
然后将新按钮添加到 flippedview 的实例中。