iOS Swift屏幕旋转问题

pftdvrlh  于 2023-06-04  发布在  Swift
关注(0)|答案(1)|浏览(279)

我将视图控制器从一个更改为另一个。当第一个控制器处于活动状态时,电话处于横向。第二个控制器只支持纵向方向。当它变得活跃时,它有一段时间是横向的,所以它的内容也是横向绘制的。然后视图控制器旋转到纵向方向,但内容的重绘不会发生。
viewWillTransition中,我调用view.setNeedsDisplay(),但这也没有帮助。
为了解决这个问题,我做了initUI函数,只有主窗口是纵向方向时才在viewDidLoad中调用。在其他情况下,我在viewWillTransition中调用initUI
我想知道在这样的标准情况下我应该写什么代码。

rqmkfv5c

rqmkfv5c1#

如果您想限制SecondViewController只能纵向。您可以使用AppDelegate的方法。在该方法中,您可以检查当前的TopViewController,并基于此返回方向。
请检查下面的代码。

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    if (window?.rootViewController as? UINavigationController)!.children.last!.isKind(of: SecondViewController.self){
        return .portrait
    }else{
        return .all
    }
}

要获取TopViewController,您可以使用此扩展:https://stackoverflow.com/a/50656239/5973760

相关问题