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)
Другие вопросы по тегам