swiftui - SwiftUI - 使用自定义视图覆盖 TabView
问题描述
我有一个带有标签栏导航概念的应用程序。对于一个视图,我目前正在尝试实现一个标签栏覆盖,大家都知道 iOS 中的照片应用程序。它在您选择图像时出现。见下文:
我试图在下面的代码片段中实现这种行为,但我有两个疑问:
- 是
.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 作为中心的状态和带有图标的前导项目。您应该构建一个将 TabBar 与工具栏交换的函数。
这是您案例的工具栏示例:
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)
})
}
}
}
}
推荐阅读
- javascript - 尝试按云量百分比过滤前哨 2 图像
- plotly - plotly store 组件中使用的`modified_timestamp` 是什么
- java - 如何在 Spring Boot 应用程序中测试验证器?
- git - 无法克隆源代码,因为 vsts 权限
- java - xmlsec 2.0.4:无法解决方法 setSignatureSpecNSprefix
- django - 模板中不可迭代的外键对象
- javascript - 使用 XAMPP 对 .js 文件的代码更改无效
- javascript - Firebase signInWithEmailAndPassword 在 UI 焦点更改之前不会触发 .then()
- c++ - 阅读格式不一致的文本文件
- html - 如何通过 .exe 接受除 .exe 之外的所有文件类型控制