В обычной программе за отрисовку окна отвечает недокументированный класс NSThemeFrame.
Создаем окно с оутлетом window на это окно. Добавляем NSView и тоже создаем на него привязку оутлет:
Добавляем на вьюху компонент NSPopupButton, убираем флажок Bordered в Инспекторе Атрибутов. В AppDelegate.h должен быть такой код:
#import <Cocoa/Cocoa.h> @interface AppDelegate : NSObject <NSApplicationDelegate> { IBOutlet NSWindow *window; IBOutlet NSView *itemView; } - (void)composeInterface; @endAppDelegate.m:
#import "AppDelegate.h" @implementation AppDelegate - (void)awakeFromNib { [self composeInterface]; } - (void)composeInterface { // Получаем указатель на фрейм окна NSView *themeFrame = [[window contentView] superview]; NSRect contentWindowFrame = [themeFrame frame]; // размер фрейма окна NSRect itemViewFrame = [itemView frame]; // размер фрейма вьюхи NSRect newFrame = NSMakeRect( contentWindowFrame.size.width - itemViewFrame.size.width, // x позиция contentWindowFrame.size.height - itemViewFrame.size.height, // y позиция itemViewFrame.size.width, // ширинв itemViewFrame.size.height); // высота [itemView setFrame:newFrame]; [themeFrame addSubview:itemView]; } @end
Вместо NSPopupButton можна добавить любой элемент на вьюху. Главное чтобы высота компонента не была больше чем сам Title Bar.
Дальше все просто. Делаем оутлет на PopupButton, и делаем с ним все что душе угодно.
Немає коментарів:
Дописати коментар