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: NSVisualEffectMaterial
Objective 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: NSVisualEffectBlendingMode
Objective 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 };
Константы
-
AppearanceBased
NSVisualEffectMaterialAppearanceBased
Указывает что существенный цвет быть определенным эффективным появлением представления.
Доступный в OS X v10.10 и позже.
-
Light
NSVisualEffectMaterialLight
Указывает световой эффект.
Доступный в OS X v10.10 и позже.
-
Dark
NSVisualEffectMaterialDark
Указывает темный эффект.
Доступный в OS X v10.10 и позже.
-
Titlebar
NSVisualEffectMaterialTitlebar
Указывает его визуальный эффект для строки заголовка окна.
Доступный в 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, };
Константы
-
BehindWindow
NSVisualEffectBlendingModeBehindWindow
Смешения и размытость с содержанием позади окна (таким как рабочий стол или другие окна).
Представления с помощью этого режима наложения могут наложиться, и представление ниже в иерархии «победит».
Доступный в OS X v10.10 и позже.
-
WithinWindow
NSVisualEffectBlendingModeWithinWindow
Смешения и размытость с содержанием позади представления в текущем окне только.
Для использования этого режима представления должны быть поддержаны уровнем.
Представления с помощью этого режима наложения не должны перекрывать друг друга.
Доступный в 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, };
Константы
-
FollowsWindowActiveState
NSVisualEffectStateFollowsWindowActiveState
Указывает, что фон должен автоматически казаться активным, когда окно активно, и неактивно, когда это не активно.
Доступный в OS X v10.10 и позже.
-
Active
NSVisualEffectStateActive
Указывает, что фон должен всегда казаться активным.
Доступный в OS X v10.10 и позже.
-
Inactive
NSVisualEffectStateInactive
Указывает, что фон должен всегда казаться неактивным.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.10 и позже.
-