Установка ширины панели NSSplitViewController с помощью Swift

Xcode 8.2.1, Swift 3.0.2, macOS 10.12

у меня есть NSSplitViewController который имеет 3 панели (обратите внимание на NS; это для приложения Mac).

Я пытаюсь установить крайнюю левую панель, чтобы она всегда имела фиксированную ширину и не меняла размеры. Я пробовал следующее:

  • По некоторым причинам автоматические ограничения макета недоступны в редакторе раскадровки в дочернем представлении панели.
  • настройка constrainMaxCoordinate а также constrainMinCoordinate не работал

Кто-нибудь еще заставил это работать в последнее время? Есть много статей на эту тему, но их инструментам уже несколько лет, и ни одно из их предложений не сработало для меня. Спасибо!

введите описание изображения здесь

3 ответа

Я наконец понял это. Я должен был установить ограничение автоматического макета программно. Установка ограничения на NSSplitViewItem не был доступен в редакторе раскадровки (Xcode 8.1).

Вот как я это сделал:

//This is my SplitViewController subclass
class MainSplitVC: NSSplitViewController {

  //Outlet to the menu pane
  @IBOutlet weak var menuPane: NSSplitViewItem!

  override func viewDidLoad() {
    super.viewDidLoad()

    //Hard-code the width of the menu pane
    NSLayoutConstraint(item: menuPane.viewController.view, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 80).isActive = true
  }
}

Я надеюсь, что это помогает кому-то еще.

Если вы не используете ограничения макета для установки шириныNSSplitViewItem, вы можете использовать такой код:

      splitViewController.splitView.setPosition(600, ofDividerAt: 0)

Обычно вы должны установить ограничения макета для дочерних представлений дочернего представления.

Например, если у вас есть NSOutlineView на левой панели, просто установите для его ограничения ширины фиксированное значение.

Размер представления панели рассчитывается с учетом ограничений его подпредставлений.

Другие вопросы по тегам