【问题标题】:change views height in Keyboard extension (iPhone X)更改键盘扩展中的视图高度(iPhone X)
【发布时间】:2018-08-31 15:37:54
【问题描述】:
我有以下问题:我构建了一个键盘扩展,是系统键盘的替代键盘。在所有较旧的 iPhone 型号中,它都可以正常工作,但在 iPhone X 上却不行。我的问题是,键盘视图的高度从 216px (iPhone 8 ,8+ , ...) 减少到 141px (iPhone X)。因为较低的高度,我的键盘按钮现在更小,为了更好的用户可用性。
我确实使用了一个 .xib 文件来创建 UI,我以编程方式添加了所有 UI - 项目。
我的问题
是否可以为键盘扩展视图(特别是 iPhone X)获得更多空间(高度)?
【问题讨论】:
标签:
swift
swift4
iphone-x
ios-keyboard-extension
【解决方案1】:
我解决了我的问题。我在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];
斯威夫特 4
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)
}
【解决方案2】:
将约束添加到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()
注意:创建子视图会产生内存警告。