是由于SwiftUI的布局机制导致的。在PageTabView中,每个页面都会在第一次出现时进行布局,而NavigationView在布局时会根据其内容的大小来确定自身的大小和位置。由于NavigationView的内容在第一次出现时可能还没有完全加载,导致布局计算错误,从而导致对齐错误的问题。
为了解决这个问题,可以尝试以下几种方法:
.onAppear
修饰符:在NavigationView中的内容视图上添加.onAppear
修饰符,并在其中进行布局相关的操作。这样可以确保在内容视图完全加载后再进行布局计算,避免对齐错误。NavigationView { ... }.frame(width: 300, height: 400)
LazyView
来实现延迟加载。例如:struct LazyView<Content: View>: View {
let build: () -> Content
init(_ build: @autoclosure @escaping () -> Content) {
self.build = build
}
var body: Content {
build()
}
}
struct ContentView: View {
var body: some View {
PageTabView {
LazyView {
NavigationView {
// 内容视图
}
}
}
}
}
以上是针对嵌套在PageTabView中的SwiftUI NavigationView在第一次出现时错误对齐的解决方法。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云