SwiftUI - 使用自定义视图覆盖 TabView

SwiftUI - Overlay TabView with Custom View

我有一个带有标签栏导航概念的应用程序。对于一个视图,我目前正在尝试实现一个标签栏覆盖,你们都知道 iOS 中的照片应用程序。当您 select 图片时它会出现。见下文:

我试图在下面的代码片段中实现这个行为,但我有两个疑问:

struct ContentView: View {
    var body: some View {
        TabView {
            
            NavigationView {
                Text("First Nav Page")
            }
            .tabItem {
                Image(systemName: "house")
                Text("Home")
                
            }.tag(0)
            
            NavigationView {
                Text("Second Nav Page")
            }
            .tabItem {
                Image(systemName: "gear")
                Text("Settings")
            }.tag(1)
            
            Text("No Nav Page")
                .tabItem{
                    Image(systemName: "plus")
                    Text("Test")
                }.tag(2)
            
        }.overlay(
            Rectangle()
                .foregroundColor(.red)
                .frame(width: 40, height: 40)
        )
    }
}

谢谢!

您要查找的是 Toolbar,而不是 TabBar。所以当用户在EditMode中改变时,你将不得不把TabBar变成Toolbar。

工具栏在 iOS 14 中可用,中间有一个 ToolbarItem 作为 Status 和一个带图标的前导项。您应该必须构建一个将 TabBar 与 Toolbar 交换的函数。

以下是适用于您的案例的工具栏示例:

struct ContentView: View {
    @State var isSelecting : Bool = false
    
    var body: some View {
        NavigationView {
            Text("Hello World")
                .toolbar {
                    ToolbarItem(placement: .bottomBar, content: {
                            Button(action: {
                                
                            }){
                                Image(systemName: "square.and.arrow.up")
                            }
                        })
                }
                .toolbar {
                    ToolbarItem(placement: .status, content: {
                            Text("Auswählen")
                                .fontWeight(.bold)
                    })
            }
        }
    }
}