我在应用程序中使用相机。该应用程序允许您借助SwiftUI中的TabView
导航到此摄像机视图。但是,问题是,当我在相机视图上时,我想隐藏TabView
。到目前为止,我一直在尝试找到解决方案,但似乎找不到任何解决方案。
这里是screenshot of the code and the view with the tabview
注意:屏幕截图包含预览图像。当我在真实设备上运行相机时,它可以正常工作。问题是进入摄像机视图后,我需要隐藏标签栏。
这是我使用的代码示例:
import SwiftUI
struct AppView: View {
var body: some View {
TabView{
Home()
.tabItem {
// Add icon
Text("Home")
}
MomentsCam()
.tabItem {
// Add icon
Text("Camera")
}.navigationBarHidden(true)
Moments()
.tabItem{
//Add icon
Text("Moments")
}
}
}
}
答案 0 :(得分:1)
我根据您的情况使用TabView更新了my solution。相同的想法:您正在使用type Page = {
edges: (Edge | null)[] | null
}
type Edge = {
node: object | null
}
function isNotNull<T> (it: T): it is NonNullable<T> {
return it != null
}
export function pageToEdges (page: Page | null) {
if (page === null) return []
const { edges } = page
if (edges === null) return []
return edges.filter(isNotNull).map(e => e.node).filter(isNotNull)
}
type CustomPage = {
number: number,
edges: CustomNode[]
}
type CustomNode = {
foo: string
}
const page = {
edges: [{
node: { foo: 'bar' }
}]
}
const data = pageToEdges(page)
function logData(input: CustomNode) {
console.log(input)
}
logData(data)
和ZStack
。想法是使用@State var selection
和.opacity
中的TabView
(在我的示例中就是YourCameraView
):
Image(systemName: "plus.circle")
当您点击相机标签时,项目struct TabViewModel: View {
@State var selection: Int = 0
var body: some View {
ZStack {
GeometryReader { geometry in
TabView(selection: self.$selection) {
Text("list")
.tabItem {
Image(systemName: "list.bullet.below.rectangle")
}.tag(0)
Text("plus")
.tabItem {
Image(systemName: "camera")
}.tag(1)
Text("more categories!")
.tabItem {
Image(systemName: "square.grid.2x2")
}.tag(2)
}
.opacity(self.selection == 1 ? 0.01 : 1)
Image(systemName: "plus.circle")
.resizable()
.frame(width: 60, height: 60)
.shadow(color: .gray, radius: 2, x: 0, y: 5)
.offset(x: geometry.size.width / 2 - 30, y: geometry.size.height - 80)
.onTapGesture {
self.selection = 0
}
.opacity(self.selection == 1 ? 1 : 0)
}
}
}
}
变得不可见
答案 1 :(得分:1)
您可以根据需要尝试以下代码。
struct MomentsCam: View {
var body: some View {
Text("Cam")
}
}
struct Moments: View {
var body: some View {
Text("Moments Cam")
}
}
struct AppView: View {
@State var showCamera = false
var body: some View {
GeometryReader{ p in
ZStack{
TabView{
Home()
.tabItem {
// Add icon
Text("Home")
}
Text("holder")
.tabItem {
// Add icon
Text("Camera")
}.navigationBarHidden(true).onAppear{
self.showCamera = true
print(p.size)
}
Moments()
.tabItem{
//Add icon
Text("Moments")
}
}
if self.showCamera{
MomentsCam().frame(width: p.size.width, height: p.size.height).background(Color.white)
}
}
}
}
}