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 Never focused(_:)用法及代碼示例
- Swift Never focused(_:equals:)用法及代碼示例
- Swift Never focusedSceneValue(_:_:)用法及代碼示例
- Swift Never foregroundStyle(_:)用法及代碼示例
- Swift Never font(_:)用法及代碼示例
- Swift Never flipsForRightToLeftLayoutDirection(_:)用法及代碼示例
- Swift Never fixedSize()用法及代碼示例
- Swift Never fullScreenCover(item:onDismiss:content:)用法及代碼示例
- Swift Never fullScreenCover(isPresented:onDismiss:content:)用法及代碼示例
- Swift Never fixedSize(horizontal:vertical:)用法及代碼示例
- Swift Never frame(width:height:alignment:)用法及代碼示例
- Swift Never pageCommand(value:in:step:)用法及代碼示例
- Swift Never opacity(_:)用法及代碼示例
- Swift Never colorMultiply(_:)用法及代碼示例
- Swift Never accessibilityAction(action:label:)用法及代碼示例
- Swift Never alert(isPresented:error:actions:message:)用法及代碼示例
- Swift Never confirmationDialog(_:isPresented:titleVisibility:actions:)用法及代碼示例
- Swift Never position(x:y:)用法及代碼示例
- Swift Never position(_:)用法及代碼示例
- Swift Never luminanceToAlpha()用法及代碼示例
- Swift Never accessibilityAction(_:_:)用法及代碼示例
- Swift Never previewDisplayName(_:)用法及代碼示例
- Swift Never badge(_:)用法及代碼示例
- Swift Never progressViewStyle(_:)用法及代碼示例
- Swift Never buttonStyle(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Never focusSection()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。