如何从顶部而不是底部添加NSButton?

时间:2019-05-07 14:24:52

标签: swift cocoa

我目前正在构建一个左侧导航窗格,其中动态添加了侧面的按钮。我有一个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

2 个答案:

答案 0 :(得分:1)

Y在macOS上从下到上(底部为0)。因此,请勿以currentY为0或10开头,也不要以开头为准。首先将currentY设置为小于视图高度的一个按钮高度,然后每次减去 58而不是添加。

因此,您得到的是这样的东西:

enter image description here

但是,如果您按照我的描述进行操作,则会得到以下信息:

enter image description here

答案 1 :(得分:0)

您可以翻转视图,以便坐标系从左上方开始。只需创建一个新的NSView子类并覆盖isFlipped

class FlippedView: NSView {
    override var flipped:Bool {
        get {
            return true
        }
    }
}

然后将新按钮添加到flippedview实例中。