Я ищу лучший способ изменить backgroundColor
Ан NSView
. Я также хотел бы иметь возможность установить соответствующую alpha
маску для NSView
. Что-то вроде:
myView.backgroundColor = [NSColor colorWithCalibratedRed:0.227f
green:0.251f
blue:0.337
alpha:0.8];
Я заметил, что NSWindow
есть этот метод, и я не большой поклонник NSColorWheel
или NSImage
фоновых опций, но если они лучше, готовы использовать.
objective-c
macos
background-color
nsview
BadPirate
источник
источник
NSRectFill
используетсяNSCompositeCopy
для выполнения заливки, поэтому он будет перекрывать все, что находится за ним - он не будет компоноваться поверх представлений предков. Для заливок с частично (или полностью) прозрачным цветом используйтеNSRectFillUsingOperation
developer.apple.com/mac/library/documentation/Cocoa/Reference/… с этойNSCompositeSourceOver
операцией.Простое и эффективное решение - настроить представление для использования слоя Core Animation в качестве резервного хранилища. Затем вы можете использовать,
-[CALayer setBackgroundColor:]
чтобы установить цвет фона слоя.Это оно!
источник
setLayer:
илиsetWantsLayer:
ломая любые WebViews, которые вы можете иметь в своем приложении, очень креативно! (Даже в разных окнах ...)setWantsLayer:
определено: При использовании представлений со слоем вы никогда не должны напрямую взаимодействовать со слоем . Порядок, когдаsetWantsLayer:
иsetLayer:
называется, является актуальным.Если вы любитель раскадровки, то вам не понадобится ни одной строки кода .
Добавьте
NSBox
в качестве подпредставления NSView и настройте кадр NSBox так же, как NSView.В раскадровке или XIB измените положение заголовка на «Нет», тип поля - « Пользовательский» , «тип границы» - «нет», а цвет границы - на любой другой.
Вот скриншот:
Это результат:
источник
Если вы вначале установили для WW значение «Да», вы можете напрямую управлять фоном слоя.
источник
Думаю, я понял, как это сделать:
источник
CGContextFillRect(context, NSRectToCGRect(dirtyRect));
Вы можете отредактировать свой ответ?Я прошел через все эти ответы, и, к сожалению, ни один из них не помог мне. Тем не менее, я нашел этот чрезвычайно простой способ, после часа поиска :)
источник
редактирование / обновление: Xcode 8.3.1 • Swift 3.1
использование:
источник
Лучшее решение :
источник
В Свифте:
источник
Используйте NSBox, который является подклассом NSView, что позволяет нам легко стилизовать
Swift 3
источник
Без сомнения, самый простой способ, также совместимый с Color Set Assets:
Свифт :
Цель-C :
Интерфейсный Разработчик :
Добавить пользовательский атрибут
backgroundColor
в построителе интерфейса, типаNSColor
.источник
Я проверил следующее, и это сработало для меня (в Swift):
источник
В Swift 3 вы можете создать расширение для этого:
источник
Посмотрите на RMSkinnedView . Вы можете установить цвет фона NSView в Интерфейсном Разработчике.
источник
В Swift вы можете создать подкласс NSView и сделать это
источник
Просто маленький многоразовый класс (Swift 4.1)
источник
Просто установите
backgroundColor
на слой (после того, как сделаете слой представления поддерживаемым).источник
Это поддерживает изменение внешнего вида системы (включение или выключение темного режима) во время работы приложения. Вы также можете установить цвет фона в Интерфейсном Разработчике, если сначала установите класс представления для BackgroundColorView.
источник