我有以下问题:我构建了一个键盘扩展,一个系统键盘的替代键盘。在所有旧的iPhone型号中它工作正常,但在iPhone X它没有。我的问题是,键盘视图的高度从216px(iPhone 8,8 +,...)降低到141px(iPhone X)。因为较低的高度,我的键盘按钮现在更小,小到便于用户使用。
我确实使用.xib文件来创建UI,我以编程方式添加所有UI - 项目。
是否可以为键盘扩展视图(特别是iPhone X)获得更多空间(高度)?
我解决了我的问题。我在Apple documentation找到以下段落:
您可以使用“自动布局”调整自定义键盘主视图的高度。默认情况下,根据屏幕大小和设备方向,自定义键盘的大小可与系统键盘匹配。系统始终将自定义键盘的宽度设置为等于当前屏幕宽度。要调整自定义键盘的高度,请更改其主视图的高度约束。
以下代码行显示了如何定义和添加此类约束:
CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint =
[NSLayoutConstraint constraintWithItem: self.view
attribute: NSLayoutAttributeHeight
relatedBy: NSLayoutRelationEqual
toItem: nil
attribute: NSLayoutAttributeNotAnAttribute
multiplier: 0.0
constant: _expandedHeight];
[self.view addConstraint: _heightConstraint];
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let heightConstraint = NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 0.0, constant: 300)
self.view.addConstraint(heightConstraint)
}
将约束添加到ViewDidLoad
方法可以解决这个问题。
override func viewDidLoad() {
super.viewDidLoad()
let heightConstraint = NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 0.0, constant: 220)
self.view.addConstraint(heightConstraint)
setupKeyboard()
注意:创建子视图会生成内存警告。