ios15 half-swiping 隐藏导航栏时返回,顶部留空 space - SwiftUI
ios15 half-swiping back while hiding the navigation bar leaves a top empty space - SwiftUI
我正在开发一个项目,其中有一个自定义导航栏,这意味着我需要自己管理后退按钮和向后滑动手势。以前没遇到什么问题,但是现在当我尝试向后滑动并停在手势中间时(半滑动),屏幕显示顶部白色space,好像导航栏是显示时没有标题(如果按下自定义后退按钮或完成手势即完全滑动,则不会出现此问题)。
在 出现白色 space 后尝试向后滑动 时也显示错误:changing items while animating can result in a corrupted navigation bar
。
奇怪的是,问题只发生在 NavigationView 的第三个屏幕上。
我附上了一个显示问题的视频,显示 half-swiping SecondView
没有产生任何顶部 space,但是 half-swiping ThirdView
确实如此。
代码如下:
import SwiftUI
//
extension UINavigationController {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = nil
}
}
struct ContentView: View {
init() {
print("ContentView")
}
var body: some View {
NavigationView {
NavigationLink(destination: SecondView()) {
Text("Go to second view")
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
}
struct SecondView: View {
init() {
print("SecondView")
}
var body: some View {
VStack {
Text("Second view")
VStack {
NavigationLink(destination: ThirdView()) {
Text("Go to third view")
}
}
.padding(.horizontal, 20)
.padding(.top, 20)
Spacer()
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
struct ThirdView: View {
init() {
print("ThirdView")
}
var body: some View {
VStack {
Text("Third view")
Spacer()
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
编辑:这只能在使用 iOS 15 时重现,在 iOS 14.5
中一切正常
我正在开发一个项目,其中有一个自定义导航栏,这意味着我需要自己管理后退按钮和向后滑动手势。以前没遇到什么问题,但是现在当我尝试向后滑动并停在手势中间时(半滑动),屏幕显示顶部白色space,好像导航栏是显示时没有标题(如果按下自定义后退按钮或完成手势即完全滑动,则不会出现此问题)。
在 出现白色 space 后尝试向后滑动 时也显示错误:changing items while animating can result in a corrupted navigation bar
。
奇怪的是,问题只发生在 NavigationView 的第三个屏幕上。
我附上了一个显示问题的视频,显示 half-swiping SecondView
没有产生任何顶部 space,但是 half-swiping ThirdView
确实如此。
代码如下:
import SwiftUI
//
extension UINavigationController {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = nil
}
}
struct ContentView: View {
init() {
print("ContentView")
}
var body: some View {
NavigationView {
NavigationLink(destination: SecondView()) {
Text("Go to second view")
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
}
struct SecondView: View {
init() {
print("SecondView")
}
var body: some View {
VStack {
Text("Second view")
VStack {
NavigationLink(destination: ThirdView()) {
Text("Go to third view")
}
}
.padding(.horizontal, 20)
.padding(.top, 20)
Spacer()
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
struct ThirdView: View {
init() {
print("ThirdView")
}
var body: some View {
VStack {
Text("Third view")
Spacer()
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
编辑:这只能在使用 iOS 15 时重现,在 iOS 14.5
中一切正常