Установка фона NSBox для градиента программно без создания подклассов - PullRequest
1 голос
/ 11 ноября 2008

Я хочу установить фон NSBox в качестве градиента. В Интерфейсном Разработчике можно установить цвет фона от NSBox до selectedMenuColor, который является градиентом.

NSBox имеет только метод setFillColor, так как Interface Builder заполняет его градиентом?

Как программно заполнить NSBox без его подкласса? Подкласс NSBox будет тривиальным, но работа Интерфейсного Разработчика предполагает, что может быть лучшее решение.

Ответы [ 4 ]

2 голосов
/ 12 ноября 2008

selectedMenuColor - это «волшебный» цвет, который не отображается сплошным цветом. Многие из этих «волшебных» цветов существуют в системе.

Я использовал colorWithPatternImage: для этого раньше. Но обратите внимание, что изображение, которое вы используете в качестве шаблона, станет мозаичным, поэтому вам, вероятно, придется изменить размер изображения до размера рамки.

0 голосов
/ 18 июля 2013

В xib выберите NSBox, затем перейдите к инспектору эффектов, отметьте NSBox для Core Animation Layer. Сейчас

IBOutlet NSBox *box;

[box.setWantsLayer:YES];

[box.layer setBackgroundColor:[[NSColor whiteColor] CGColor]];

или

[box.setWantsLayer:YES];

[box.layer setBackgroundColor:[[NSColor colorWithPatternImage:[NSImage imageNamed:@"white.gif"]] CGColor]];
0 голосов
/ 11 ноября 2008

Цвет selectedMenuColor на самом деле является предварительно отрисованным изображением градиента, а не градиента, нарисованного на лету, поэтому нет никакого способа указать произвольный градиент в качестве цвета фона. Как сказал Бен, подклассы - это, вероятно, верный путь.

0 голосов
/ 11 ноября 2008

Вероятно, самое близкое, что вы могли бы получить, это использовать NSColor, созданный с помощью colorWithPatternImage:, затем создать требуемый градиент в качестве изображения и загрузить его. Уродливо, но должно работать. Я думаю, что подклассы - ваша лучшая ставка.

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