NSVisualEffectView
NSVisualEffectView предоставляет поддержку для эффектов пользовательского интерфейса, представленных в OS X Yosemite, связанный с полупрозрачностью, включая «вибрирующие» появления. Для создания содержания смешения представления с тем, что находится позади окна представления или смешения с содержанием представления глубже в иерархии представления Вы содержите представление в представлении визуального эффекта.
Полупрозрачность
Представление визуального эффекта обеспечивает два различных стиля полупрозрачности, как проиллюстрировано в снимке экрана:
Смешивание позади окна позволяет то, что находится позади окна для показа через. Этот стиль автоматически установлен во многих местах, включая листы, легкая сдоба (
NSPopover), и табличные представления с помощью источника перечисляют стиль подсветки выделения.Смешивание в окне позволяет содержанию окна показывать через и автоматически установлено для панелей инструментов.
Вибрация связана с полупрозрачностью. Это описывает составляющий композит режим, делающий специальное смешивание такой как Плюс Легче, Плюс Более темный, Колор Додж или Колор Берн. Система автоматически использует вибрацию во многих местах, включая легкую сдобу, листы и табличные представления боковой панели. Некоторые элементы UI динамично используют вибрацию на основе своего содержания. Например, NSTextField возразите вибрации использования, когда определенные особые цвета будут использоваться, такой как NSColor labelColor и secondaryLabelColor. Вы, возможно, тем не менее, должны поддерживать вибрацию в пользовательском представлении, или с другой стороны Вы, возможно, должны отключить вибрацию в представлении.
Управление вибрацией
Первый шаг в поддержке вибрации в представлении должен содержать представление в экземпляре NSVisualEffectView. Обычно лучше добавить вибрацию только к листовым представлениям, не контейнерным представлениям, потому что трудно выключить вибрацию, как только это идет. Кроме того:
Представление должно реализовать
allowsVibrancyвозвратитьсяtrue.Эффективное появление представления должно позволить вибрацию (т.е. это должно быть любой
NSAppearanceNameVibrantLightилиNSAppearanceNameVibrantDarkпоявление).В большинстве случаев Вы устанавливаете появление на окне или на представлении визуального эффекта — подпредставления тогда наследовали появление.
Если режим наложения
NSVisualEffectBlendingModeWithinWindow, представление должно использовать Базовые Слои анимации.В этом случае лучше устанавливать
wantsLayerкtrueна родительском представлении, содержащем представление визуального эффекта, потому что размывание произойдет при представлении визуального эффекта и его подпредставлениях.
По умолчанию, если представление установлено быть нарисованным как вибрирующее, и это и все его подпредставления будут вибрирующими — подпредставление не может выключить вибрацию просто путем возврата false от allowsVibrancy. То, ли или как можно выключить вибрацию, зависит от режима наложения — это вызвано тем, что NSVisualEffectViewреализация размывания и самой вибрации зависит от режима наложения:
В смешивании позади окна система описывает прямоугольник, который должен быть размыт к серверу окна. Области, которые должны быть вибрирующими, также описаны похожим способом. В этой ситуации Вы можете уклонение прямоугольные формы путем добавления другого представления визуального эффекта с его набором состояния к
NSVisualEffectStateInactive; Вы тогда добавляете подпредставления к этому.Обратите внимание на то, что добавление другого представления визуального эффекта сделает прямоугольник, содержащий представление невибрирующий, включая что-либо нарисованное в том прямоугольнике родительским представлением. Это может иметь эффект разоблачения как более темные или более легкие прямоугольники вокруг некоторых представлений. Единственное решение в этом случае для всего представления или чтобы быть вибрирующим или не вибрирующим. Вы не можете смешать два.
Со смешиванием в окне вибрация достигается путем устанавливания фильтра составления композита уровня. Составляющий композит фильтр применяется к уровню и всем его дочерним элементам, который означает, что дочернее представление всегда будет вибрирующим. Однако можно добавить невибрирующие одноуровневые представления по вибрирующему представлению; перекрывающиеся одноуровневые представления не будут вибрирующими.
Используя появления
Можно дополнительно установить появление в NSAppearanceNameVibrantDark или NSAppearanceNameVibrantLight получить желаемое легкое или темное появление. Можно объединить это с надлежащим легким или темным материалом для получения желаемого вибрирующего взгляда. Не объединяться NSAppearanceNameVibrantDark с легким материалом, потому что получающийся эффект выглядит плохо.
Разделение на подклассы примечаний
Если Вы разделяете на подклассы NSVisualEffectView:
Если Вы переопределяете
viewDidMoveToWindowилиviewWillMoveToWindow:, необходимо вызватьsuper.Вы не должны переопределять
drawRect:илиupdateLayer.
Наследование
-
NSObject -
NSResponder -
NSView -
NSVisualEffectView
-
NSObject -
NSResponder -
NSView -
NSVisualEffectView
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSAccessibility -
NSAccessibilityElementProtocol -
NSAnimatablePropertyContainer -
NSAppearanceCustomization -
NSCoding -
NSDraggingDestination -
NSObjectProtocol -
NSUserInterfaceItemIdentification -
Печатаемый -
Reflectable -
NSAccessibility -
NSAccessibilityElement -
NSAnimatablePropertyContainer -
NSAppearanceCustomization -
NSCoding -
NSDraggingDestination -
NSObject -
NSUserInterfaceItemIdentification
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Материал для представления.
Объявление
Swift
var material: NSVisualEffectMaterialObjective C
@property NSVisualEffectMaterial materialОбсуждение
Значение по умолчанию
NSVisualEffectMaterialAppearanceBased— материал обновляется, чтобы быть корректным материалом на основе набора появления на этом представлении.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
-
Внутренний стиль фона представления.
Объявление
Swift
var interiorBackgroundStyle: NSBackgroundStyle { get }Objective C
@property(readonly) NSBackgroundStyle interiorBackgroundStyleОбсуждение
Стиль фона может быть легким или темным, в зависимости от выбранного материала.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
-
blendingMode blendingModeСвойствоУказывает, как размывается содержание представления.
Объявление
Swift
var blendingMode: NSVisualEffectBlendingModeObjective C
@property NSVisualEffectBlendingMode blendingModeОбсуждение
Представление визуального эффекта может или смешаться с содержанием позади окна (
NSVisualEffectBlendingModeBehindWindow), или в текущем окне (NSVisualEffectBlendingModeWithinWindow).Я
NSVisualEffectMaterialTitlebar, режим наложения может только бытьNSVisualEffectBlendingModeWithinWindow.Значение по умолчанию
NSVisualEffectBlendingModeBehindWindow.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
-
Указывает состояние визуального эффекта представления.
Обсуждение
Значение по умолчанию
NSVisualEffectStateFollowsWindowActiveState.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
Типы данных
-
Константы для указания материала использование представления визуального эффекта.
Объявление
Swift
enum NSVisualEffectMaterial : Int { case AppearanceBased case Light case Dark case Titlebar }Objective C
typedef NS_ENUM(NSInteger, NSVisualEffectMaterial) { NSVisualEffectMaterialAppearanceBased, NSVisualEffectMaterialLight, NSVisualEffectMaterialDark, NSVisualEffectMaterialTitlebar };Константы
-
AppearanceBasedNSVisualEffectMaterialAppearanceBasedУказывает что существенный цвет быть определенным эффективным появлением представления.
Доступный в OS X v10.10 и позже.
-
LightNSVisualEffectMaterialLightУказывает световой эффект.
Доступный в OS X v10.10 и позже.
-
DarkNSVisualEffectMaterialDarkУказывает темный эффект.
Доступный в OS X v10.10 и позже.
-
TitlebarNSVisualEffectMaterialTitlebarУказывает его визуальный эффект для строки заголовка окна.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
-
-
Константы для указания источника содержания для смешивания, которое использует представление визуального эффекта.
Объявление
Swift
enum NSVisualEffectBlendingMode : Int { case BehindWindow case WithinWindow }Objective C
typedef NS_ENUM(NSInteger, NSVisualEffectBlendingMode) { NSVisualEffectBlendingModeBehindWindow, NSVisualEffectBlendingModeWithinWindow, };Константы
-
BehindWindowNSVisualEffectBlendingModeBehindWindowСмешения и размытость с содержанием позади окна (таким как рабочий стол или другие окна).
Представления с помощью этого режима наложения могут наложиться, и представление ниже в иерархии «победит».
Доступный в OS X v10.10 и позже.
-
WithinWindowNSVisualEffectBlendingModeWithinWindowСмешения и размытость с содержанием позади представления в текущем окне только.
Для использования этого режима представления должны быть поддержаны уровнем.
Представления с помощью этого режима наложения не должны перекрывать друг друга.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
-
-
Константы, чтобы указать, как существенное появление должно отразить состояние действия окна.
Объявление
Swift
enum NSVisualEffectState : Int { case FollowsWindowActiveState case Active case Inactive }Objective C
typedef NS_ENUM(NSInteger, NSVisualEffectState) { NSVisualEffectStateFollowsWindowActiveState, NSVisualEffectStateActive, NSVisualEffectStateInactive, };Константы
-
FollowsWindowActiveStateNSVisualEffectStateFollowsWindowActiveStateУказывает, что фон должен автоматически казаться активным, когда окно активно, и неактивно, когда это не активно.
Доступный в OS X v10.10 и позже.
-
ActiveNSVisualEffectStateActiveУказывает, что фон должен всегда казаться активным.
Доступный в OS X v10.10 и позже.
-
InactiveNSVisualEffectStateInactiveУказывает, что фон должен всегда казаться неактивным.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.10 и позже.
-
