Как придать NSWindow определенный цвет фона - PullRequest
15 голосов
/ 29 декабря 2008

Я пишу приложение какао, которое имеет NSWindow. Я хочу изменить цвет фона окна на определенный цвет. Но свойства окна в инспекторе предоставляют только альтернативу «Текстурированное окно». Как я могу сделать цвет окна по желанию?

Ответы [ 4 ]

26 голосов
/ 30 декабря 2008

Попробуйте вызвать метод экземпляра setBackgroundColor: с цветом на вашем экземпляре окна. Что в имени ..;)

Как это:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Option 1
    [self.window setBackgroundColor: NSColor.whiteColor];
    // Option 2 - using dot syntax
    self.window.backgroundColor = NSColor.whiteColor;
}
14 голосов
/ 20 октября 2014

Самый простой способ изменить фон окна - это установить его прямо в файле .xib.

Нет кода вообще:

  1. Выберите ваше окно (класс NSWindow должен появиться в поле Class)
  2. Нажмите кнопку [+] под пользовательскими атрибутами времени выполнения
  3. Введите «backgroundColor» и выберите «Цвет»

Window Properties in XCode

5 голосов
/ 29 декабря 2008

Пока вы хотите изменить только цвет фона области содержимого, а не рамки и панели инструментов, вам не нужно создавать подкласс NSWindow. То, что вам нужно сделать, это подкласс NSView и заставить ваш пользовательский вид нарисовать желаемый цвет, а затем установить экземпляр этого класса в качестве представления содержимого окна.

В качестве альтернативы, вы можете избежать установки NSImageView или NSColorWell без полей в качестве представления контента, но я не уверен, что Apple хочет, чтобы у них были подпредставления. Если нет, вам придется оставить окно пустым.

Тем не менее, вы должны быть действительно уверены, что подходящий цвет фона подходит. Почти всегда это не так, и вам следует придерживаться внешнего вида Aqua или HUD.

1 голос
/ 29 декабря 2008

Вы должны создать подкласс NSWindow, чтобы изменить фон, а затем переопределить реализацию для

- (id)initWithContentRect:(NSRect)contentRect
                styleMask:(NSUInteger)styleMask
                  backing:(NSBackingStoreType)bufferingType
                    defer:(BOOL)flag

В качестве примера см. HUDWindow Мэта Джеммелла: http://mattgemmell.com/2006/03/12/hudwindow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...