在应用程序运行时尝试在swift中更改UIView的帧?

在应用程序运行时尝试在swift中更改UIView的帧?,swift,Swift,当我的设备的方向改变,但没有任何效果时,我试图改变UIView的框架。这是我的密码: override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() guard let portraitScreenView = viewScreenSizePortrait, let overLay = overLayView else{return} if UIDevice.c

当我的设备的方向改变,但没有任何效果时,我试图改变UIView的框架。这是我的密码:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    guard
        let portraitScreenView = viewScreenSizePortrait,
        let overLay = overLayView else{return}

    if UIDevice.current.orientation.isPortrait{
        print("isPortrait")
        overLay.frame = CGRect.init(x: 0, y: 0, width: portraitScreenView.width, height: portraitScreenView.height)
        self.overLayView.frame = overLay.frame
    }else{
        print("isLandscape")
        overLay.frame = CGRect.init(x: 0, y: 0, width: portraitScreenView.height, height: portraitScreenView.width)
        self.overLayView.frame = overLay.frame
    }

    print("self.overLayView.frame: \(self.overLayView.frame)")


}

更改帧后添加
self.setNeedsDisplay()

self?仅UIview或self(UIViewController)?我尝试了特定UIview和整个视图,但它没有调用函数self.view.layoutIfNeeded()或尝试更改主队列上的帧:DispatchQueue.main.async{//UI changes}