以编程方式迅速更改比例约束5

时间:2019-09-12 23:44:56

标签: ios swift constraints

我有一个弹出视图,我希望它在iPad的纵向和横向外壳中具有不同的大小。这是我的代码,但是效果不佳,

在纵向和横向时,我希望它的宽度分别为超级视图宽度的60%和40%。

纵向和横向时,其高度分别为全景视图高度的50%和50%。

func popupConfiguration(){
    switch UIDevice().userInterfaceIdiom {
    case .tv, .carPlay, .unspecified, .phone:
        break
    case .pad:
        if UIApplication.shared.statusBarOrientation == .portrait || UIApplication.shared.statusBarOrientation == .portraitUpsideDown {
            popupView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.6).isActive = true
            popupView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true
        } else {
            popupView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.4).isActive = true
            popupView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true
        }
    @unknown default:
        break
    }
}

然后,我应该将其添加到viewDidLayoutSubviewsviewWillAppear中吗? 非常感谢

1 个答案:

答案 0 :(得分:0)

实施viewWillTransition(to:with:)。查看新尺寸是纵向(高度较大)还是横向(宽度较大)。相应地替换您的约束;如果您在过渡协调器的动画中执行此操作,则更改将与旋转一起被动画化。