第二个 vc 小于第一个 vc

second vc is smaller that the initial vc

我在昨天更新后 iPad 上遇到了这个问题:如果我加载第二个视图控制器,它看起来比第一个小(见下图)。有趣的是,自从我在 iPad 上更新到新的 iOS 后才发生这种情况。在 iPhone 上没有这样的问题:两个 VC 的大小相同。

代码如下:

import UIKit

class StartVC: UIViewController, ButtonDelegate {


   var width = CGFloat()
   var height = CGFloat()




override func viewDidLoad() {
    super.viewDidLoad()

    width = view.frame.width
    height = view.frame.height

    setTestBtn()


    view.backgroundColor = UIColor.purple

}

func setTestBtn(){

    let a = Button(frame: CGRect(x: 0,y: 0, width: width*0.2, height: width*0.2))
    a.center = CGPoint(x: width*0.5, y: height*0.5)
    a.backgroundColor = .cyan
    a.delegate = self
    a.setLabel()
    a.label.text = "Go to the MainVC"
    view.addSubview(a)
}

func buttonClicked(sender: Button) {

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "mainVC") as! MainVC
    let transition = CATransition()
    transition.duration = 2
    transition.type = CATransitionType.push
    transition.subtype = CATransitionSubtype.fromRight
    view.window!.layer.add(transition, forKey: kCATransition)

    vc.view.frame = view.bounds

    self.present(vc, animated: true, completion: nil)


       print("# ViewController func buttonClicked() OK!")

   }




import UIKit

class MainVC: UIViewController, ButtonDelegate {

var width = CGFloat()
var height = CGFloat()

override func viewDidLoad() {
    super.viewDidLoad()

    width = view.frame.width
    height = view.frame.height

    setTestBtn()

    view.backgroundColor = .red


}

func setTestBtn(){

    let a = Button(frame: CGRect(x: 0,y: 0, width: width*0.2, height: width*0.2))
    a.center = CGPoint(x: width*0.5, y: height*0.5)
    a.backgroundColor = .orange
    a.delegate = self
    a.setLabel()
    a.label.text = "Go to the StartVC"
    view.addSubview(a)
}

func buttonClicked(sender: Button) {

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "startVC") as! StartVC
    let transition = CATransition()
    transition.duration = 2
    transition.type = CATransitionType.push
    transition.subtype = CATransitionSubtype.fromRight
    view.window!.layer.add(transition, forKey: kCATransition)

    vc.view.frame = view.bounds

    self.present(vc, animated: true, completion: nil)

       print("# ViewController func buttonClicked() OK!")

   }


}

自iOS13发布后,View Controllers的模态呈现方式默认由系统自动选择

如果你想抵消这种影响,这可以帮助你。

vc.modalPresentationStyle = .overFullScreen
self.present(vc, animated: true, completion: nil)

希望对您有所帮助!