Я столкнулся с той же проблемой с похожим устройством, созданным в коде, и, наконец, решил его.Моя реализация обрабатывается в пользовательском подклассе NSView, который я затем добавляю как .accessoryView NSOpenPanel из контроллера представления, где я отображаю панель.
private func setup() {
hiddenFilesCheckbox = NSButton(checkboxWithTitle: "Show Hidden Files", target: self, action: #selector(hiddenFilesCheckboxValueChanged))
guard let checkbox = hiddenFilesCheckbox else {
os_log("Hidden files checkbox is nil")
return
}
addSubview(checkbox)
checkbox.translatesAutoresizingMaskIntoConstraints = false
checkbox.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 12).isActive = true
checkbox.topAnchor.constraint(equalTo: self.topAnchor, constant: 12).isActive = true
self.heightAnchor.constraint(greaterThanOrEqualToConstant: frame.height).isActive = true
self.widthAnchor.constraint(greaterThanOrEqualToConstant: frame.width).isActive = true
}
«hiddenFilesCheckbox» объявляется как свойство моего пользовательского NSViewподкласс.Я играл с некоторыми другими жестко закодированными значениями констант, но они лучше всего работали в моих тестах.Я передаю openPanel инициализатору подкласса, чтобы использовать его фрейм для установки ширины accessoryView.Я использовал значение жесткого кода 40 для высоты в инициализаторе, которая здесь не указана.После настройки вспомогательного представления с этими ограничениями предупреждения перестали появляться, и вспомогательное представление отображается в соответствии с пожеланиями / ожиданиями.