Как добавить NSButtons сверху, а не снизу? - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я строю левую панель навигации, в которой кнопки со стороны добавляются динамически.У меня есть подкласс 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
}

. Он работает как нужно, но кнопки добавляются снизу, а не сверху:

Результирующий скриншот приложения

Как мне сделать так, чтобы новые кнопки добавлялись сверху?

Для справки, вот моя раскадровка с представлением "Servi", содержащим кнопки.

Раскадровка левой панели

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Y идет снизу вверх на macOS ( bottom равно 0).Так что не начинайте с currentY с 0 или 10 или с того, с чего вы начинаете.Начните с currentY, установив на одну кнопку высоту, которая меньше высоты просмотра, а затем вычитайте 58 каждый раз вместо добавления.

Итак, вы получите что-то вроде этого:

enter image description here

Но если вы сделаете то, что я описываю, выполучить что-то вроде этого:

enter image description here

0 голосов
/ 21 июня 2019

Вы можете перевернуть изображение так, чтобы система координат начиналась слева сверху.Просто создайте новый подкласс NSView и переопределите isFlipped

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

Затем добавьте новые кнопки в экземпляр flippedview.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...