如何从顶部而不是从底部添加 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 的实例中。