iOS 13 - 右栏按钮项目在模态表演示中偏移

Pep*_*epo 6 xcode swift ios13

我在 iOS 13 及其新的表单卡样式模式演示中遇到了这个奇怪的问题。

从 ViewController1 我模态呈现嵌入在 NavigationController 中的 ViewController2,一切正常。
从 ViewController2,我然后模态呈现嵌入在 NavigationController 中的 ViewController3,我得到了右栏按钮偏移量。

这是问题的视频:有人解决了吗?

我究竟做错了什么?

主视图控制器

import UIKit

let vc1identifier = "vc1identifier"
let vc2identifier = "vc2identifier"

class ViewController: UIViewController {

@IBAction func tap1(_ sender: UIButton) {
    if let navigation = self.storyboard?.instantiateViewController(withIdentifier: vc1identifier) as? UINavigationController,
        let nextVC = navigation.contentViewController as? UnoViewController {

        //self.navigationController?.pushViewController(nextVC, animated: true)
        self.present(navigation, animated: true, completion: nil)
    }
}
}

extension UIViewController {
var contentViewController: UIViewController {
    if let navcon = self as? UINavigationController {
        return navcon.visibleViewController!
    } else {
        return self
    }
}
}
Run Code Online (Sandbox Code Playgroud)

第二个视图控制器

import UIKit

class UnoViewController: UIViewController {

@IBOutlet weak var barButton: UIBarButtonItem!


override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    barButton.title = "GotoVC2"
}

@IBAction func pressThis(_ sender: UIBarButtonItem) {
    if let navigation = self.storyboard?.instantiateViewController(withIdentifier: vc2identifier) as? UINavigationController,
        let nextVC = navigation.contentViewController as? DueViewController {

        self.present(navigation, animated: true, completion: nil)
    }
}
}
Run Code Online (Sandbox Code Playgroud)

Ang*_*lus 2

我遇到了同样的问题。

解决方案很简单,你只需要告诉导航栏它需要这样的布局

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