返回

SwiftUI 工具栏隐藏功能解析

Android

在 SwiftUI 中隐藏 TabView 底部的工具栏

在 SwiftUI 中构建应用程序时,隐藏 TabView 底部的工具栏可以显著提升用户体验。这种技巧在各种场景中至关重要,例如播放视频或滚动长列表时,从而创造更沉浸式的界面。

在 iOS 16 中使用工具栏视图修改器

iOS 16 为 SwiftUI 提供了一个简洁的工具栏视图修改器,使隐藏工具栏变得轻而易举。只需将以下代码添加到您的 TabView 中:

.toolbar {
    ToolbarItem(placement: .bottomBar) {
        Button("Hide Toolbar") {
            // Hide the toolbar
        }
    }
}

当用户点击“Hide Toolbar”按钮时,工具栏将立即消失。

在 iOS 16 之前使用工具栏视图修改器

对于 iOS 16 之前的版本,使用工具栏视图修改器的方法略有不同,如下所示:

struct ToolbarModifier: ViewModifier {
    func body(content: Content) -> some View {
        content
            .toolbar {
                ToolbarItem(placement: .bottomBar) {
                    Button("Hide Toolbar") {
                        // Hide the toolbar
                    }
                }
            }
    }
}

然后,将此修改器添加到您的 TabView 中:

.modifier(ToolbarModifier())

代码示例

以下是一个完整的代码示例,演示了如何在 SwiftUI 中隐藏 TabView 底部的工具栏:

import SwiftUI

struct ContentView: View {
    @State private var showToolbar = true

    var body: some View {
        TabView {
            Text("First View")
                .tabItem {
                    Label("First", systemImage: "house")
                }

            Text("Second View")
                .tabItem {
                    Label("Second", systemImage: "list.dash")
                }
        }
        .toolbar {
            ToolbarItem(placement: .bottomBar) {
                Button("Hide Toolbar") {
                    showToolbar.toggle()
                }
            }
        }
        .disabled(!showToolbar) // Disable TabView interaction when toolbar is hidden
    }
}

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

常见问题解答

1. 我可以在没有按钮的情况下隐藏工具栏吗?
答:可以,通过在 @State 变量中使用布尔值来控制工具栏的可见性,并使用 .disabled(!showToolbar) 禁用 TabView 交互。

2. 工具栏是否会在应用程序重新启动时保持隐藏状态?
答:不会,隐藏工具栏的状态仅在当前应用程序会话中有效。

3. 我可以仅在特定选项卡中隐藏工具栏吗?
答:可以,通过使用 @Binding 变量将 showToolbar 状态传递给选项卡视图并根据当前选项卡设置状态来实现。

4. 如何在工具栏处于隐藏状态时恢复它?
答:通过使用相同的方式恢复按钮或使用手势向底部滑动。

5. 在其他 SwiftUI 视图中可以隐藏工具栏吗?
答:可以,通过使用 toolbar 修改器和自定义代码来控制其他视图中的工具栏可见性。