Как ограничить второй минимальный размер NSViewController в приложении OS X? - PullRequest
0 голосов
/ 22 октября 2018

Я начинающий разработчик Mac OS X.Я предполагаю, что это простой вопрос, но я не смог найти каких-либо полезных результатов с помощью поиска.

Как мне ограничить размер ВТОРОГО контроллера представления?

Я начал спростое приложение Mac OS X с одним View Controller.Я могу выбрать окно, содержащее View Controller, затем выбрать «инспектор размера» и установить флажок «Минимальный размер содержимого», а также указать минимальные x и y для окна.

Это позволяет мне указатьминимальный размер для этого первого контроллера представления, как я ожидаю.Все хорошо.

Затем я добавляю второй контроллер вида с модальным переходом от первого контроллера вида, запускаемый нажатием кнопки.Я добавляю NSTextView к этому второму контроллеру представления, чтобы отобразить приписанную строку.Текстовое представление работает нормально, отображая приписанную строку правильно.Это текстовое представление является отдельным окном и не имеет ограничения по минимальному размеру.

Итак, как мне указать минимальный размер для этого второго представления контроллера представления?Это обычно делается в Интерфейсном Разработчике или программно?Когда я шагаю по иерархии представления с помощью структуры документа, я не вижу, как я могу указать минимальный размер с помощью инспектора размера.Я что-то упустил ??

Вот мой упрощенный код:

файл "ViewController.swift"

class ViewController: NSViewController {
...
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    let secondVC: SecondViewController = segue.destinationController as! SecondViewController
    secondVC.reportAttrString = myReport.reportText
    }
...
}

файл "SecondViewController.swift"

class SecondViewController: NSViewController {
    var reportAttrString = NSMutableAttributedString()

    @IBOutlet var ReportTextView: NSTextView!
}

Буду признателен за любые предложения или ссылки на любую документацию или руководства, которые могут мне помочь.

1 Ответ

0 голосов
/ 22 октября 2018

Самый простой способ сделать это будет:

class SecondViewController: NSViewController, NSWindowDelegate {

override func viewWillAppear() {
    super.viewWillAppear()
    self.view.window?.delegate = self
    self.view.window?.minSize = NSSize(width: 100, height: 100)
    }

}

override func viewDidAppear() {
    super.viewDidAppear()
    var frame = self.view.window!.frame
    var initialSize = NSSize(width: 100, height: 100)
    frame.size = initialSize
    self.view.window?.setFrame(frame, display: true)
}

Хотя, если вы ищете ручной подход, то сработает следующее:

class SecondViewController: NSViewController, NSWindowDelegate {

override func viewWillAppear() {
    super.viewWillAppear()
    self.view.window?.delegate = self
    // Set the initial size
    var frame = self.view.window?.frame
    var initialSize = NSSize(width: 100, height: 100)
    frame.size = initialSize
    self.view.window?.setFrame(frame, display: true)
}


func windowWillResize(_ sender: NSWindow, to frameSize: NSSize) -> NSSize {
    let minimumSize = NSSize(width: 100, height: 100)
    var newSize = NSSize()
    if(frameSize.width < minimumSize.width) {
        newSize.width = minimumSize.width
    } else {
        newSize.width = frameSize.width
    }
    if(frameSize.height < minimumSize.height) {
        newSize.height = minimumSize.height
    } else {
        newSize.height = frameSize.height
    }
    return newSize
}


}

Дальнейшее чтение:

Изменение размера окна события

NSWindow minSize

Изменение размера окна

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