Заголовок NSWindow как всплывающая кнопка индикатора

Я пытаюсь сделать свое первое приложение Cocoa (ранее я делал приложения для iOS), и то, что я хочу сделать для своего пользовательского представления, - это сделать его заголовок доступным для кликов с треугольником индикатора (аксессуара), обращенным вниз. При нажатии на заголовок откроется всплывающее окно/меню с моими элементами.

Как это сделать в Какао?


person Galfaroth    schedule 03.06.2012    source источник


Ответы (2)


ответ Rdelmar, вероятно, самый простой способ, но он может не делать именно то, что вы хотели бы сделать (то есть заменить фактический заголовок с всплывающим элементом вместо всплывающей кнопки под заголовком в области панели инструментов). Что касается функциональности, ваше приложение, вероятно, будет работать так же хорошо, используя панель инструментов.

Однако, если вы действительно хотите заменить фактический заголовок, средство для этого будет состоять в том, чтобы установить текст заголовка NSWindow на @"", чтобы скрыть его, и перерисовать его, вставив в свое собственное представление.

[[[theWindow contentView] superview] addSubview:theSubview];

По сути, это говорит суперпредставлению основного представления контента добавить другое подпредставление (прямой «перевод» из кода), и вам придется повозиться с рамкой этого нового подпредставления, чтобы оно было расположено там, где должен располагаться заголовок ( так как теперь его можно разместить в любом месте оконного фрейма, в том числе поверх строки заголовка, а не просто внутри представления содержимого).

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

person Vervious    schedule 03.06.2012

Вы можете сделать это, добавив панель инструментов в свое окно в IB. После того, как вы добавите панель инструментов, вы можете дважды щелкнуть по ней, чтобы открыть ее вид настройщика. Перетащите всплывающую кнопку в область допустимых элементов панели инструментов, и после того, как она будет вставлена ​​туда, вы можете перетащить ее в нижнюю область, которая показывает макет панели инструментов — вы также можете перетащить туда любые элементы по умолчанию, которые вам не нужны. .

person rdelmar    schedule 03.06.2012
comment
Панель инструментов не то, что я хочу. Панель инструментов находится под заголовком окна. Я хочу изменить заголовок окна на кнопку с треугольником, обращенным вниз, который при нажатии открывает меню. - person Galfaroth; 04.06.2012
comment
Тогда вам, вероятно, придется согласиться с идеей Вервиуса. Этот супервизор, к которому он обращается, — это NSThemeView — я не знаю, есть ли в этом какая-то опасность, так как это недокументированное представление, которое Apple может изменить, но оно должно работать, чтобы дать вам тот вид, который вы хотите. - person rdelmar; 05.06.2012