2014-09-21 72 views
5

根据documentation,更改自定义键盘的高度很简单。下面是苹果的文件iOS 8自定义键盘应用程序扩展 - 改变方向的高度

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    let constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 400.0) 
    self.view.addConstraint(constraint) 
} 

这样确实所示的代码迅速等效的版本,但它改变了高度的恒定值,如果你更改设备的取向,这是不可取的。在纵向模式下将键盘高度设置为400.0可能没有问题,但在横向模式下可能不合适。例如:iPhone 5的标准键盘视图大小为纵向320,216和横向568,162。设置一个不变的高度会将键盘视图大小更改为320,400纵向和568,400(实际上是整个屏幕)横向。

我唯一的想法现在是创建一个包含每个设备类型和每个方向的键盘视图大小的字典,然后每个设备改变方向时更新恒定高度约束。有没有人找到更优雅的解决方案?

+0

也寻找同样的答案 – honcheng 2014-09-25 03:35:10

回答

2

我已经在我的键盘的视图控制器实现willAnimateRotationToInterfaceOrientation:做到了这一点。理论上我们应该使用新的 willTransitionToTraitCollection:withTransitionCoordinator:或理想情况下可能viewWillTransitionToSize:withTransitionCoordinator:,但这些似乎不会在UIInputViewControllers上调用,至少从8.0.2开始。所以目前最好的选择似乎是保持对你的heightConstraint的引用,并修改你的实现中的常量willAnimateRotation

而且我记得有位与实际找出新方向的疑难杂症的;最后我做喜欢的事:

let isLandscape: Bool = UIInterfaceOrientationIsLandscape(toInterfaceOrientation),然后使用。

相关问题