В обычной программе за отрисовку окна отвечает недокументированный класс NSThemeFrame.
Создаем окно с оутлетом window на это окно. Добавляем NSView и тоже создаем на него привязку оутлет:
Добавляем на вьюху компонент NSPopupButton, убираем флажок Bordered в Инспекторе Атрибутов. В AppDelegate.h должен быть такой код:
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSWindow *window;
IBOutlet NSView *itemView;
}
- (void)composeInterface;
@end
AppDelegate.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, и делаем с ним все что душе угодно.
0 коментарі:
Отправить комментарий