Jon*_*Jon 6 ios swift ios-app-extension custom-keyboard
根据文档,更改自定义键盘的高度很简单.这是Apple文档中显示的swift等效版本的代码
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)
}
Run Code Online (Sandbox Code Playgroud)
这确实有效,但它会将高度更改为CONSTANT值,如果更改设备的方向,则该值不可取.在纵向模式下将键盘高度设置为400.0可能没问题,但在横向模式下可能不合适.例如:iPhone 5的标准键盘视图大小为纵向320,216和横向568,162.设置恒定高度会将键盘视图大小更改为纵向的320,400和横向的568,400(实际上是整个屏幕).
我现在唯一想到的是创建一个字典,其中包含每种设备类型和每个方向的键盘视图大小,然后在每次设备更改方向时更新恒定高度约束.有没有人找到更优雅的解决方案?
willAnimateRotationToInterfaceOrientation:我通过在键盘的视图控制器中实现来完成此操作。理论上我们应该使用 new
willTransitionToTraitCollection:withTransitionCoordinator:或理想情况下的 Maybe viewWillTransitionToSize:withTransitionCoordinator:,但这些似乎不会在 UIInputViewControllers 上被调用,至少从 8.0.2 开始是这样。因此,目前最好的选择似乎是保留对 heightConstraint 的引用,并修改 willAnimateRotation.
我还记得在实际弄清楚新方向时遇到了一些问题;我最终做了类似的事情:
let isLandscape: Bool = UIInterfaceOrientationIsLandscape(toInterfaceOrientation)然后使用它。
| 归档时间: |
|
| 查看次数: |
1869 次 |
| 最近记录: |