首页 > 解决方案 > 如何重绘横向的子视图

问题描述

下午好社区,

我正在尝试通过扩展向视图控制器添加两个子视图,但是在旋转设备时它不尊重布局,关于如何使其看起来正确的任何选项?

我在下面附上了我的代码和几张示例照片,第一张照片是我希望它看起来的样子,其余的 ui 都丢失了。

这是第一个 景观中的错误 再次将设备旋转为纵向时的错误

这是我的代码:

  func presentCustomAlertController(on ViewController:UIViewController,toPresentCustomView customView:UIView,withBackgroundView backGroundView:UIView){
    customView.translatesAutoresizingMaskIntoConstraints = false
    guard let targetView = ViewController.view  else {return}
   
    backGroundView.alpha = 0
    backGroundView.backgroundColor = .black
    backGroundView.frame = targetView.bounds
    targetView.addSubview(backGroundView)
    targetView.addSubview(customView)
    
    customView.setNeedsLayout()
    customView.setNeedsDisplay()
    customView.layoutIfNeeded()
    customView.layoutSubviews()
    
    targetView.setNeedsLayout()
    targetView.setNeedsDisplay()
    targetView.layoutIfNeeded()
    targetView.layoutSubviews()
    
    backGroundView.setNeedsDisplay()
    backGroundView.setNeedsLayout()
    backGroundView.layoutIfNeeded()
    
 
    
    customView.frame = CGRect(x: targetView.center.x, y: targetView.center.y, width: targetView.frame.size.width-80, height: 300)
    UIView.animate(withDuration: 0.25, animations: {
        backGroundView.alpha = 0.6
        
    },completion: { done in
        UIView.animate(withDuration: 0.25, animations: {
            customView.center = targetView.center
           
        })
        
    })
    
}

}

标签: swiftswift5.4

解决方案


推荐阅读