在 iOS 13 上显示第二个模态导航控制器时填充错误

Tad*_*Tad 1 uinavigationbar uinavigationitem ios13

在 iOS 13 上,当在第一个模式视图控制器上呈现第二个模式视图控制器时,按钮栏项目上的填充不正确。特别是右边距消失了。

不正确的填充

这应该如何解决?

Tad*_*Tad 6

此行为是由于 iOS 13 中的错误造成的。可以通过在导航栏上调用 setNeedsLayout 来修复它。

快速示例:

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

Objective-C 示例:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // Fix navigation item placement on iOS 13: https://forums.developer.apple.com/thread/121861
    if (@available(iOS 13.0, *)) {
        [self.navigationController.navigationBar setNeedsLayout];
    }
}
Run Code Online (Sandbox Code Playgroud)

积分:从Apple Developer Form 上的该线程借用的解决方案。