iOS 自定义键盘更改约束



我正在尝试以编程方式在 swift 中创建自定义键盘,到目前为止,我已经能够在 iPhone 上为纵向和横向创建我想要的约束,但前提是我以相应的方向启动键盘。

当我自己翻转设备时,问题就来了:纵向,横向。我已经将约束存储在两个数组中,并在我的viewDidLoad和viewWillTransition函数中运行此代码块:

if UIScreen.main.bounds.height >= 568 {
NSLayoutConstraint.deactivate(constraintsLandscape)
NSLayoutConstraint.activate(constraintsPortrait)
}
else if UIScreen.main.bounds.height <= 414 {
NSLayoutConstraint.deactivate(constraintsPortrait)
NSLayoutConstraint.activate(constraintsLandscape)
}

任何帮助,不胜感激。

当前纵向和横向

如果这是在方法内部,你会在屏幕旋转后调用它吗? 如果没有,您可以检查设备旋转覆盖此方法:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
if UIDevice.current.orientation.isLandscape {
print("Device is in Landscape mode")
NSLayoutConstraint.deactivate(constraintsPortrait)
NSLayoutConstraint.activate(constraintsLandscape)
} else {
print("Device is in Portrait mode")
NSLayoutConstraint.deactivate(constraintsLandscape)
NSLayoutConstraint.activate(constraintsPortrait)
}
}

如果您已经在执行此操作,则只需在更改约束后调用self.view.layoutifNeeded()

最新更新