1.5 外观修饰符
5 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/view-appearance
1.5 外观修饰符
配置视图的前景与背景样式、控件以及可见性。
概述
用这些修饰符配置视图的外观,包括颜色与色调的使用、叠加层与背景元素的应用。你可以控制视图以及视图中特定元素的可见性,还可以管理各种控件的形状与大小。
关于配置视图的信息,参见视图配置。
颜色与图案
- backgroundStyle(_:) —— 把指定样式设置为在该视图内渲染的背景。
- foregroundStyle(_:) —— 把视图的前景元素设置为使用给定样式。
- foregroundStyle(::) —— 在子视图中设置前景样式的主要层级和次要层级。
- foregroundStyle(::_:) —— 设置前景样式的主要、次要和第三层级。
- allowedDynamicRange(_:) —— 返回一个用指定允许动态范围配置的新视图。
色调
- tint(_:) —— 设置该视图内的色调颜色。
- listRowSeparatorTint(_:edges:) —— 设置与某一行关联的色调颜色。
- listSectionSeparatorTint(_:edges:) —— 设置与某个分区关联的色调颜色。
- listItemTint(_:) —— 为列表中的内容设置固定的色调颜色。
浅色与深色外观
- preferredColorScheme(_:) —— 为该呈现设置偏好的配色方案。
- preferredSurroundingsEffect(_:) —— 对透视视频应用一种效果。
前景元素
- border(_:width:) —— 用指定的样式和宽度为该视图添加边框。
- overlay(alignment:content:) —— 把你指定的视图叠加到该视图之前。
- overlay(_:ignoresSafeAreaEdges:) —— 把指定样式叠加到该视图之前。
- overlay(_:in:fillStyle:) —— 把你指定的形状叠加到该视图之前。
- spatialOverlay(alignment:content:) —— 在该视图的三维边界内添加次级视图。
- spatialOverlayPreferenceValue(:alignment::) —— 用来自该视图的指定偏好值生成另一个视图,让它占据与原视图相同的三维空间。
背景元素
- background(alignment:content:) —— 把你指定的视图叠加到该视图之后。
- background(_:ignoresSafeAreaEdges:) —— 把视图的背景设为某种样式。
- background(ignoresSafeAreaEdges:) —— 把视图的背景设为默认背景样式。
- background(_:in:fillStyle:) —— 把视图的背景设为用某种样式填充的可设置内边距形状。
- background(in:fillStyle:) —— 把视图的背景设为用默认背景样式填充的可设置内边距形状。
- alternatingRowBackgrounds(_:) —— 覆盖该视图中列表和表格是否使用交替行背景。
- listRowBackground(_:) —— 在列表行条目之后放置自定义背景视图。
- scrollContentBackground(_:) —— 指定该视图中可滚动视图背景的可见性。
- containerBackground(_:for:) —— 用视图设置所在容器的容器背景。
- containerBackground(for:alignment:content:) —— 用视图设置所在容器的容器背景。
- glassBackgroundEffect(displayMode:) —— 用自动的玻璃背景效果和相对容器的圆角矩形填充视图背景。
- glassBackgroundEffect(_:displayMode:) —— 用自定义玻璃背景效果和相对容器的圆角矩形填充视图背景。
- glassBackgroundEffect(in:displayMode:) —— 用自动的玻璃背景效果和你指定的形状填充视图背景。
- glassBackgroundEffect(_:in:displayMode:) —— 用自定义玻璃背景效果和你指定的形状填充视图背景。
- backgroundExtensionEffect() —— 为该视图添加背景扩展效果。视图会被复制成镜像副本,放置在视图四周任何有可用安全区域的边缘上。此外还会在其上应用模糊效果,把这些副本模糊掉。
- backgroundExtensionEffect(isEnabled:) —— 为该视图添加背景扩展效果。视图会被复制成镜像副本,放置在视图四周任何有可用安全区域的边缘上。此外还会在其上应用模糊效果,把这些副本模糊掉。
透视画面
- breakthroughEffect(_:) —— 确保该视图始终对用户可见,即使像 3D 模型这样的其他内容遮挡了它。
控件配置
- defaultWheelPickerItemHeight(_:) —— 设置滚轮式选择器条目的默认高度。
- horizontalRadioGroupLayout() —— 把该视图内单选组样式的选择器设置为水平排布,单选按钮位于布局内部。
- controlSize(_:) —— 设置该视图内控件的尺寸。
- buttonBorderShape(_:) —— 设置该视图中按钮的边框形状。
- buttonRepeatBehavior(_:) —— 设置该视图中的按钮在长时间交互时是否应重复触发其动作。
- headerProminence(_:) —— 设置该视图的页眉显著程度。
- scrollDisabled(_:) —— 禁用或启用可滚动视图的滚动。
- scrollBounceBehavior(_:axes:) —— 配置可滚动视图在指定轴上的回弹行为。
- scrollIndicatorsFlash(onAppear:) —— 当可滚动视图出现时闪烁其滚动指示器。
- scrollIndicatorsFlash(trigger:) —— 当某个值变化时闪烁可滚动视图的滚动指示器。
- menuOrder(_:) —— 设置从该视图呈现的菜单中条目的偏好顺序。
- menuActionDismissBehavior(_:) —— 告诉菜单在执行动作后是否关闭。
- paletteSelectionEffect(_:) —— 指定应用到调色板条目的选中效果。
- typeSelectEquivalent(_:) —— 在列表或表格这类集合中设置显式的类型选择等价文本。
符号效果
- symbolEffect(_:options:isActive:) —— 返回一个添加了符号效果的新视图。
- symbolEffect(_:options:value:) —— 返回一个添加了符号效果的新视图。
- symbolEffectsRemoved(_:) —— 返回一个新视图,其继承的符号图像效果被移除或保持不变。
隐私与屏蔽
- privacySensitive(_:) —— 把该视图标记为包含敏感的私密用户数据。
- redacted(reason:) —— 添加一个理由,对该视图层级应用屏蔽。
- unredacted() —— 移除对该视图层级应用屏蔽的任何理由。
- invalidatableContent(_:) —— 把接收者标记为其内容可能失效。
- contentCaptureProtected(_:)
可见性
- hidden() —— 无条件隐藏该视图。
- labelsHidden() —— 隐藏该视图内任何控件的标签。
- labelsVisibility(_:) —— 控制该视图内任何控件标签的可见性。
- menuIndicator(_:) —— 设置该视图内控件的菜单指示器可见性。
- listRowSeparator(_:edges:) —— 设置与该特定行关联的分隔符显示模式。
- listSectionSeparator(_:edges:) —— 设置是否隐藏与某个列表分区关联的分隔符。
- listSectionIndexVisibility(_:) —— 更改列表分区索引的可见性。
- persistentSystemOverlays(_:) —— 设置覆盖在应用之上、非瞬态系统视图的偏好可见性。
- scrollIndicators(_:axes:) —— 设置该视图中滚动指示器的可见性。
- scrollClipDisabled(_:) —— 设置滚动视图是否把其内容裁剪到自身边界内。
- sliderThumbVisibility(_:) —— 设置该视图中
Slider的滑块可见性。 - tableColumnHeaders(_:) —— 控制
Table列标题视图的可见性。 - upperLimbVisibility(_:) —— 在呈现 ImmersiveSpace 场景时,设置用户上肢的偏好可见性。
- volumeBaseplateVisibility(_:) —— 设置体(volume)底板的可见性,它会在用户看向体的「地板」时以及调整大小时出现。
automatic和visible都会显示底板,hidden则永不显示。
感官反馈
- sensoryFeedback(_:trigger:) —— 当提供的
trigger值变化时播放指定的feedback。 - sensoryFeedback(trigger:_:) —— 当提供的
trigger值变化后,从feedback闭包返回时播放反馈。 - sensoryFeedback(_:trigger:condition:) —— 当提供的
trigger值变化、且condition闭包返回true时,播放指定的feedback。
小组件配置
- widgetAccentable(_:) —— 把该视图及其所有子视图加入强调分组。
- widgetCurvesContent(_:) —— 如果上下文允许,沿曲线显示小组件的内容。
- widgetLabel(_:) —— 返回一个本地化文本标签,在附属系列小组件的主 SwiftUI 视图之外显示附加内容。
- widgetLabel(label:) —— 创建一个标签,用于在附属系列小组件的主 SwiftUI 视图之外显示附加内容。
- dynamicIsland(verticalPlacement:) —— 指定出现在灵动岛中的展开式实时活动视图的垂直放置位置。
- accessoryWidgetGroupStyle(_:) —— 可应用于
AccessoryWidgetGroup的视图修饰符,用于指定这三个内容视图将被遮罩成的形状。style的值设为.automatic,默认即.circular。 - controlWidgetActionHint(_:) —— 由被修改的标签所描述的控制项的动作提示。
- controlWidgetStatus(_:) —— 由被修改的标签所描述的控制项的状态。
窗口行为
- windowDismissBehavior(_:) —— 配置包含
self的窗口的关闭功能。 - windowFullScreenBehavior(_:) —— 配置包含
self的窗口的全屏功能。 - windowToolbarFullScreenVisibility(_:) —— 配置窗口进入全屏模式时窗口工具栏的可见性。
- windowMinimizeBehavior(_:) —— 配置包含
self的窗口的最小化功能。 - windowResizeAnchor(_:) —— 当视图尺寸变化以致窗口必须调整大小时,设置所使用的窗口锚点。
- windowResizeBehavior(_:) —— 配置包含
self的窗口的调整大小功能。 - preferredWindowClippingMargins(::) —— 请求在窗口边界之外绘制时使用额外的外边距。