xamarin 如何防止uinavigationbar和视图之间的差距在iOS 13?

vhipe2zx  于 2022-12-07  发布在  iOS
关注(0)|答案(3)|浏览(114)

在iOS 13中使用模态演示时,我们目前遇到了导航栏大小问题。
在大多数情况下,这可以正常工作,如以下屏幕截图所示:

然而,在一些屏幕中,我们得到了这种奇怪的效果,导航栏的高度较低,并且在它和视图之间有一个奇怪的“透明”间隙。

这两个视图控制器的属性设置值相同,以模态方式显示,并且在其子视图上具有相同的约束(与超级视图/边距/顶部布局参考线的间距为0)。
这个问题在iOS 12中不会发生,即使是使用iOS 13 SDK构建的。这是iOS 13(beta 8)中的已知问题,还是我们应该在代码/故事板中进行调整?

des4xlb0

des4xlb01#

override func viewWillAppear(_ animated: Bool) {  
    super.viewWillAppear(animated)  
    if #available(iOS 13.0, *) {  
        navigationController?.navigationBar.setNeedsLayout()  
    }
}

我们在这附近找到了这份工作,它对我们很有效。

7rtdyuoh

7rtdyuoh2#

就像Rod的答案一样,但我发现只有在下一个主线程runLoop中放入setNeetsLayout(),它才能工作:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Workaround for iOS 13 modal gap below navigationbar
    if #available(iOS 13.0, *) {
        DispatchQueue.main.async {
            self.navigationController?.navigationBar.setNeedsLayout()
        }
    }
}
9udxz4iz

9udxz4iz3#

如果这些答案不起作用,请确保将导航栏类型设置为"标准"。

相关问题