Как мне изменить цвет окна приложения, подобного этому?

#macos #cocoa #tint

#macos #cocoa #изменение цвета

Вопрос:

Я новичок в разработке OSX.

Как мне окрасить приложение в темно-серый цвет, как это было сделано?

введите описание изображения здесь

возможно ли это сделать с помощью Interface Builder? Если нет, то как мне сделать это из кода?

Ответ №1:

Чтобы изменить цвет строки заголовка окна, задайте текстурирование окна в IB. Затем в соответствующем контроллере представления / делегате приложения обновите цвет окна.

 NSColor *grayColor = [NSColor colorWithCalibratedRed:64/255.0f
                                               green:64/255.0f
                                                blue:64/255.0f
                                               alpha:1.0];
[self.window setBackgroundColor:grayColor];
  

Теперь окно должно выглядеть так :

введите описание изображения здесь

С помощью панели инструментов:

введите описание изображения здесь

Обратите внимание, что когда окно установлено как текстурированное, текстурированным будет все окно. Я подклассировал представление и установил фон в белый цвет :

 - (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];
    [[NSColor whiteColor] setFill];
    NSRectFill(dirtyRect);
}
  

Иначе окно хотело бы этого :

введите описание изображения здесь

Комментарии:

1. Фантастика! Спасибо за потрясающее объяснение!

2. Только одна маленькая деталь. В окне есть панель инструментов. Я использовал ваш ответ, и сам вид был подкрашен, но не само окно.

3. @RubberDuck Я упоминал ранее, что когда вы устанавливаете цвет окна, он будет применяться везде, поэтому вам нужно подклассировать представления и установить цвет фона по мере необходимости.

4. Нет, я говорю об окне. Окно — это то, которое не тонируется. Оно остается серым. Виды становятся темно-серыми, но не окно.

5. @RubberDuck Я думаю, вы забыли сделать окно текстурированным в конструкторе интерфейса.