ios - 在 swift 5 中以编程方式更改比例约束
问题描述
我有一个弹出视图,我希望它在 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
}
}
然后,我应该将它添加到viewDidLayoutSubviews
orviewWillAppear
吗?非常感谢
解决方案
实施viewWillTransition(to:with:)
。查看新尺寸是纵向(高度更大)还是横向(宽度更大)。相应地替换您的约束;如果您在过渡协调器的动画中执行此操作,则更改将与旋转一起进行动画处理。
推荐阅读
- c++ - 从 explorer.exe 读取 PCACLIENT 内存
- java - 是否可以在非 Android 应用程序中使用 Android 支持库?
- python - 如何以 Big Endian 方式读取和解析二进制文件
- ember.js - EMBER JS - 仅在需要时从后端获取关联的模型数据
- python - 迭代时未在熊猫数据框中设置值
- javascript - Node js - Push() 函数在参考和 mongodb 中无法正常工作
- android - 如何从 Android Studio 运行单个 Kotlin 类
- javascript - 如何向 window.addEventListener 添加时间
- ionic-framework - 离子组件在框架中不起作用
- java - 使用 apache poi 循环数组数据