SwiftUI - 使用自定义视图覆盖 TabView
SwiftUI - Overlay TabView with Custom View
我有一个带有标签栏导航概念的应用程序。对于一个视图,我目前正在尝试实现一个标签栏覆盖,你们都知道 iOS 中的照片应用程序。当您 select 图片时它会出现。见下文:
我试图在下面的代码片段中实现这个行为,但我有两个疑问:
-
.overlay()
是正确的做法吗?我想将它与一个状态结合起来并相应地设置它以启用/禁用覆盖。
- 如果从编码的角度来看覆盖没问题,我将如何将其对齐到底部并调整大小以使其恰好覆盖标签栏?
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)
})
}
}
}
}
我有一个带有标签栏导航概念的应用程序。对于一个视图,我目前正在尝试实现一个标签栏覆盖,你们都知道 iOS 中的照片应用程序。当您 select 图片时它会出现。见下文:
我试图在下面的代码片段中实现这个行为,但我有两个疑问:
-
.overlay()
是正确的做法吗?我想将它与一个状态结合起来并相应地设置它以启用/禁用覆盖。 - 如果从编码的角度来看覆盖没问题,我将如何将其对齐到底部并调整大小以使其恰好覆盖标签栏?
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)
})
}
}
}
}