Методы для управления панелью инструментов

Можно определить высоту панели инструментов и имеет ли она элементы переполнения путем выполнения процедур, описанных ниже.

Определение, имеет ли Панель инструментов Элементы Переполнения

Если панель инструментов неспособна вывести на экран в настоящее время конфигурируемые элементы панели инструментов всего пользователя, она продвигает дополнительные элементы в меню переполнения и выводит на экран значок меню переполнения как показано на рисунке 1.

Рисунок 1  панель инструментов, указывающая элементы в меню переполнения
A toolbar indicating items in the overflow menu

Приложение может определить, имеет ли панель инструментов элементы переполнения путем сравнения числа элементов, возвращенных методом items с числом элементов, возвращенных visibleItems метод как показано в Перечислении 1. Если эти значения отличаются, то панель инструментов имеет элементы в меню переполнения.

  Пример кода перечисления 1, чтобы протестировать, если панель инструментов имеет элементы переполнения

int numberOfItems=[[theToolbar items] count];
int numberOfVisibleItems=[[theToolbar visibleItems] count];
 
if (numberOfItems != numberOfVisibleItems) {
    // toolbar has overflow items
}

Вычисление высоты панели инструментов

Несмотря на то, что NSToolbar в настоящее время не обеспечивает метод для возврата высоты панели инструментов, просто вычислить то значение. Вы вычитаете высоту представления содержания окна от высоты окна.

Если панель инструментов скрыта, функция Objective C в Перечислении 2 вычисляет высоту панели инструментов на окне, возвращаясь 0.

  Objective C перечисления 2 функционирует для вычисления высоты панели инструментов

float ToolbarHeightForWindow(NSWindow *window)
{
    NSToolbar *toolbar;
    float toolbarHeight = 0.0;
    NSRect windowFrame;
 
    toolbar = [window toolbar];
 
    if(toolbar && [toolbar isVisible])
    {
        windowFrame = [NSWindow contentRectForFrameRect:[window frame]
                                styleMask:[window styleMask]];
        toolbarHeight = NSHeight(windowFrame)
                        - NSHeight([[window contentView] frame]);
    }
 
    return toolbarHeight;
}