可能很难从图片中看出,但它在底部增加了一个更大的空白区域,并且它在导航栏下方稍微向上移动了整个视图(或者它可能正在缩小视图?)。我在应用中有通知横幅,它们在第一张图片中显示良好,但是当它像第二张图片一样显示时,通知位于导航栏下方且无法读取。
这是什么原因造成的?我该如何解决?
如果需要更多代码或屏幕截图,请告诉我,并感谢您的时间。
这是我的主视图代码,包含 NavigationView:
struct ContentView: View {
let settings: Settings
var body: some View {
NavigationView {
VStack {
CarouselView(views: [
PageView(pageModel: PageViewModel(page: "DISPOSE", settings: settings)),
PageView(pageModel: PageViewModel(page: "MOVE TO ME", settings: settings)),
PageView(pageModel: PageViewModel(page: "MOVE TO LOCATION", settings: settings))
])
}
.navigationBarItems(
leading: NavigationLink(destination: SettingsView(settings: settings)){
Image(systemName: "gear")
.resizable()
.frame(width: 35, height: 35)
},
trailing: NavigationLink(destination: HelpView()){
Image(systemName: "questionmark.circle")
.resizable()
.frame(width: 35, height: 35)
}
)
.navigationBarTitle(Text(""), displayMode: .inline)
}
.navigationViewStyle(StackNavigationViewStyle())
}
这是 CarouselView 的一个片段,这是设置主视图框架的地方:
import SwiftUI
struct CarouselView: View {
@GestureState private var dragState = DragState.inactive
@State var carouselLocation = 0
let screenWidth = UIScreen.main.bounds.size.width
let screenHeight = UIScreen.main.bounds.size.height
var views:[PageView]
private func onDragEnded(drag: DragGesture.Value) {
let dragThreshold:CGFloat = 400
if drag.predictedEndTranslation.width > dragThreshold || drag.translation.width > dragThreshold{
carouselLocation = carouselLocation - 1
} else if (drag.predictedEndTranslation.width) < (-1 * dragThreshold) || (drag.translation.width) < (-1 * dragThreshold)
{
carouselLocation = carouselLocation + 1
}
}
var body: some View {
ZStack{
ForEach(0..<views.count){i in
//Spacer()
self.views[i].isActive(i == relativeLoc())
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.animation(.interpolatingSpring(stiffness: 300.0, damping: 30.0, initialVelocity: 10.0))
.background(Color.white)
.opacity(self.getOpacity(i))
.animation(.interpolatingSpring(stiffness: 300.0, damping: 30.0, initialVelocity: 10.0))
.offset(x: self.getOffset(i))
.animation(.interpolatingSpring(stiffness: 300.0, damping: 30.0, initialVelocity: 10.0))
.zIndex(self.getZIndex(i))
//Spacer()
}
}
当转到 SettingsView 或 HelpView 然后导航回 ContentView 时,内容视图将交替显示,如下所示:
还有这个: