gpt4 book ai didi

ios - 自定义键盘中的自动布局与高度约束冲突

转载 作者:行者123 更新时间:2023-12-01 16:35:09 27 4
gpt4 key购买 nike

我正在为 iphone 和 ipad 开发一个自定义的多语言键盘,但我遇到了一个 UI 问题,在设备方向发生变化的情况下我无法保留正确的 UI。

我的最终目标是在横向 + 纵向模式 + iPhone + iPad 设备中实现更多的键盘高度(带有建议的默认 ios 键盘高度)。

但是,一旦我启动并运行自动调整大小(不是自动布局),我就无法向键盘高度添加约束(在 Xib 文件中禁用自动布局)。

如果我通过启用自动布局添加约束,我会放松 subview 的自动调整大小,以便它们根据设备屏幕自行调整它们。

我的基本问题是我不知道该走哪条路,所以我只能专注于那里。

以下是我用来以编程方式添加约束的代码。

- (void)updateViewConstraints {
[super updateViewConstraints];
CGFloat _expandedHeight = 273;
NSLayoutConstraint *_heightConstraint =
[NSLayoutConstraint constraintWithItem: self.view
attribute: NSLayoutAttributeHeight
relatedBy: NSLayoutRelationEqual
toItem: nil
attribute: NSLayoutAttributeWidth
multiplier: 0.0
constant: _expandedHeight];
[self.view addConstraint: _heightConstraint];


}

-(void)viewDidAppear:(BOOL)animated {
self.inputView = (UIInputView *)Keyboard;
[self updateViewConstraints];
}

-(void)viewWillAppear:(BOOL)animated{

NSLog(@"viewWillAppear");
}

-(void)viewWillLayoutSubviews{
NSLog(@"viewWillLayoutSubviews");
[self updateViewConstraints];
}

任何建议都会很棒!
提前致谢。

最佳答案

避免键盘扩展中的约束冲突的最佳方法是:

  • 创建一个包含所有 subview 的键盘背景 View
    的键盘。
  • 自动布局仅键盘背景 View
    使用根键盘 Controller View 使背景 View 与 Root View 具有相同的框架。不要自动布局所有其他
    subview 。
  • 手动布局所有键盘 subview
    调用后根键盘 Controller 的 viewDidLayoutSubviews[super viewDidLayoutSubviews] .

  • 此外,通过这样做,由于自动布局计算量大大减少,键盘扩展启动速度将大大提高。

    关于ios - 自定义键盘中的自动布局与高度约束冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959157/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com