NSMenu с минимальной шириной: нажатие ⌥ заставляет пользовательский вид игнорировать минимальную ширину
Я пишу приложение меню состояния, с большим изображением в центре одного из пунктов меню. До сих пор это работало хорошо - пока я не попытался установить минимальную ширину в меню состояния.
Когда я нажимаю клавишу ⌥ (опция), чтобы использовать альтернативный элемент меню, настраиваемый вид с изображением в нем изменяется до размера, который был бы, если бы не было минимальной ширины.
Вот несколько изображений, иллюстрирующих проблему до и после проведения ⌥. Серый цвет - это пользовательский вид, который должен растягиваться на всю ширину.
Проблема сохраняется до тех пор, пока меню открыто, даже после отпускания ⌥, но исчезает, когда меню закрывается и открывается снова, пока не будет нажата кнопка again.
Моя системная версия - Mac OS X v10.12.6 (Sierra). Моя маска авторазмера для вида такова:
let autoresizingMask: NSView.AutoresizingMask = [.minXMargin, .minYMargin, .maxXMargin, .maxYMargin, .width, .height]
Изменить: если я сделаю вид по центру в пункте меню, а не растянуть (без .width
а также .height
), он все еще движется влево.
1 ответ
Я только что понял, что решение очень простое. Мне просто нужно было установить ширину рамки моего пользовательского представления на минимальную ширину меню состояния.
let r = NSRect(x: 0, y: 0, width: statusMenuMinWidth, height: h)