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