focusSection()
声明
func focusSection() -> some View
返回值
可以将焦点引导到其可聚焦后代的视图。
详述
当用户在视图之间移动焦点时,使用焦点部分自定义 SwiftUI 的行为。
以下 tvOS 示例在屏幕左上方放置了三个按钮(“1”、“2” 和 “3”),在右下角放置了三个按钮(“A”、“B” 和 “C”)。默认情况下,在 Siri Remote 上的 “1” - “3” 组中的任何按钮上向右滑动都不会执行任何操作,因为焦点系统直接在其右侧找不到可聚焦的视图。但是通过将包含按钮“A” - “C” 的VStack
声明为焦点部分,VStack
可以接收焦点,并将焦点传递给它的第一个可聚焦子项(按钮“A”)。该示例在VStack
上放置了一个边框来说明这种空间排列。
var body: some View {
HStack {
VStack {
Button ("1") {}
Button ("2") {}
Button ("3") {}
Spacer()
}
.border(Color.white, width: 2)
Spacer()
VStack {
Spacer()
Button ("A") {}
Button ("B") {}
Button ("C") {}
}
.border(Color.white, width: 2)
.focusSection()
}
}
请注意,因为包含按钮 “1” - “3” 的 VStack
并未将自身声明为焦点部分,因此无法将焦点从按钮 “A” - “C” 直接返回到左侧。这些按钮都没有可聚焦的视图——在这种情况下,或者是按钮,或者是带有focusSection()
修饰符的VStack
——直接位于其左侧。
将此修改器应用于视图会根据移动样式影响焦点行为:
-
定向运动:使用 Siri Remote 手势、键盘上的箭头键或任何其他根据基本方向(上、下、左、右)起作用的输入类型进行导航会产生定向运动。当使用
focusSection()
进行修改时,视图的框架变得能够接受焦点,以便将其定向到其在行进方向上最近的可聚焦后代。在前面的示例中,将 right-sideVStack
声明为焦点部分允许它从左侧的按钮接收 right-directed 焦点。 -
顺序移动:使用数字表冠、键盘上的 Tab 键或任何其他类型的输入(根据顺序中的下一个或前一个项目起作用)会产生顺序移动。当您使用
focusSection()
修饰符时,SwiftUI 会偏离其默认的基于布局的序列,在恢复默认序列之前访问每个已修改视图的可聚焦后代。在可聚焦的后代集合中,SwiftUI 继续按布局顺序(leading-to-trailing,从上到下)访问视图。
focusSection()
不影响修改后视图的可聚焦性。如果修改后的视图没有可聚焦的后代,那么修改器什么也不做。
可用版本
相关用法
- Swift Optional focused(_:equals:)用法及代码示例
- Swift Optional focused(_:)用法及代码示例
- Swift Optional focusedSceneValue(_:_:)用法及代码示例
- Swift Optional font(_:)用法及代码示例
- Swift Optional foregroundStyle(_:)用法及代码示例
- Swift Optional fullScreenCover(isPresented:onDismiss:content:)用法及代码示例
- Swift Optional flipsForRightToLeftLayoutDirection(_:)用法及代码示例
- Swift Optional fixedSize()用法及代码示例
- Swift Optional fullScreenCover(item:onDismiss:content:)用法及代码示例
- Swift Optional frame(width:height:alignment:)用法及代码示例
- Swift Optional fixedSize(horizontal:vertical:)用法及代码示例
- Swift Optional flatMap(_:)用法及代码示例
- Swift Optional symbolVariant(_:)用法及代码示例
- Swift Optional popover(isPresented:attachmentAnchor:arrowEdge:content:)用法及代码示例
- Swift Optional mask(alignment:_:)用法及代码示例
- Swift Optional listSectionSeparatorTint(_:edges:)用法及代码示例
- Swift Optional badge(_:)用法及代码示例
- Swift Optional keyboardType(_:)用法及代码示例
- Swift Optional clipShape(_:style:)用法及代码示例
- Swift Optional preferredColorScheme(_:)用法及代码示例
- Swift Optional background(_:ignoresSafeAreaEdges:)用法及代码示例
- Swift Optional saturation(_:)用法及代码示例
- Swift Optional overlay(alignment:content:)用法及代码示例
- Swift Optional colorMultiply(_:)用法及代码示例
- Swift Optional confirmationDialog(_:isPresented:titleVisibility:presenting:actions:message:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional focusSection()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。