我正在尝试创建一个同时适用于iPhone和iPad的导航视图。目前我在iPhone上运行它,但在iPad上运行它时,导航视图无法正确显示我的主视图。请参见以下内容:
1.这是我加载应用程序的时间
1.如果我按产品(左上角),它会打开产品选项卡。
1.当我单击某个产品时,它会转到此屏幕
1.如果我单击产品1(见第三张图片),它会在另一个导航栏中打开所有详细信息。
我试图实现的是,图像4是不是在导航标签,而是全屏.我试图从我的代码中删除NavigationView,这似乎解决了这个问题,使其全屏.然而,我然后失去了导航视图按钮,让用户查看其他产品.
这里是一个缩短版本我的代码(没有所有的文本/图像细节):
var body: some View {
NavigationView {
ScrollView(.vertical, showsIndicators: false) {
VStack(alignment: .center, spacing: 20) {
ProductHeaderView(product: product)
VStack(alignment: .leading, spacing: 15) {
Text(product.title)
.font(.largeTitle)
.fontWeight(.heavy)
.foregroundColor(product.gradientColors[1])
Text(product.headline)
.font(.headline)
.multilineTextAlignment(.leading)
}
.padding(.horizontal, 20)
.frame(maxWidth: 640, alignment: .center)
}
.navigationBarTitle(product.title, displayMode: .inline)
.navigationBarHidden(true)
}
.edgesIgnoringSafeArea(.top)
}
}
}
提前感谢您的帮助:)
编辑:
以下是产品标题视图.swift代码:
var body: some View {
ZStack {
LinearGradient(gradient: Gradient(colors: product.gradientColors), startPoint: .topLeading, endPoint: .bottomTrailing)
TabView{
ForEach(0..<product.images.count, id: \.self) { item in
Image(product.images[item])
.resizable()
.scaledToFit()
.shadow(color: Color(red: 0, green: 0, blue: 0, opacity: 0.15), radius: 8, x: 6, y: 8)
.scaleEffect(isAnimatingImage ? 1.0 : 0.6)
}//: FOR LOOP
}//: TAB VIEW
.tabViewStyle(PageTabViewStyle())
.padding(.vertical, 0)
} //: ZSTACK
.frame(height: 414)
.onAppear(){
withAnimation(.easeOut(duration: 0.5)){
isAnimatingImage = true
}
}
}
4条答案
按热度按时间vawmfj5a1#
只需在NavigationView中添加以下行作为修饰符:
rqmkfv5c2#
正如我所评论的,应该只有一个
NavigationView
,所以这里修复了ProductDetailView
,删除了冗余的NavigationView
。使用Xcode 12进行测试
5lhxktic3#
我发现了问题,我删除了navigationView和2行
因为这隐藏了视图顶部的导航按钮。
lyr7nygr4#
如果您仅将add property .navigationViewStyle(StackNavigationViewStyle())添加到NavigationView,则代码可以正常工作。