更改键盘扩展架(iPhone X)中的视图高度

时间:2018-08-31 15:37:54

标签: swift swift4 iphone-x ios-keyboard-extension

我遇到以下问题:我构建了键盘扩展名,这是系统键盘的替代键盘。在所有较旧的iPhone型号中,它都能正常工作,但在iPhone X上却不能。我的问题是,键盘视图的高度从216px(iPhone 8,8 +,...)降低到141px(iPhone X)。由于高度较低,因此我的键盘按钮现在更小了,以便于更好的用户可用性。

我确实使用.xib文件创建了UI,我以编程方式添加了所有UI-Items。

iPhone 8 iPhone X

我的问题

是否有可能为键盘扩展视图(特别是iPhone X)获得更多的空间(高度)?

2 个答案:

答案 0 :(得分:4)

我解决了我的问题。我在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)
    }

答案 1 :(得分:0)

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()

注意:创建子视图会产生内存警告。