iOS 自定义键盘扩展自动布局

标签 ios objective-c

我正在开发一个自定义键盘,我只想使用一个 UICollectionView 作为内容。 CollectionView 应该填充(中心 x 和 y,宽度和高度可用空间)键盘 View 。

我的问题是,如果我旋转设备,则不会调整 Collection View 的大小。

我尝试了布局约束,调整了 viewWillTransitionToSize 上的 View 大小,但它不起作用。任何人都可以给我提示或告诉我完成此操作的方法吗?

最佳答案

在添加约束之前,Autolayout 应该将 translatesAutoresizingMaskIntoConstraints 设置为 NO。下面的代码可以制作一个具有相等边缘的 UICollectionView 自动布局。

- (void)viewDidLoad {
    [super viewDidLoad];

    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
    collectionView.translatesAutoresizingMaskIntoConstraints = NO;
    collectionView.backgroundColor = [UIColor redColor];
    [self.view addSubview:collectionView];

    //Adding layout constraint
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:collectionView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:collectionView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:collectionView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0.0]];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:collectionView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0]];
}

此外,我建议您使用Masonry构建自动布局。在您的情况下,您只需要运行下面的代码来进行约束。

[collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self.view);
}];

顺便说一下,自动布局会比你自己计算框架使用更多的内存。由于 iOS 键盘扩展具有非常严格的内存使用限制(大约 40mb 取决于您的设备)。如果您的键盘在处理其他事情时会占用大量内存,我建议您不要使用自动布局。

关于iOS 自定义键盘扩展自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135748/

相关文章:

objective-c - 如何检测 objective-c 中的外部键盘连接?

iphone - 使用选项卡 View 启动应用程序但未选择选项卡?

iOS7 崩溃 - PopViewController 在 Landscape ViewController 上调用

iphone - 如何在 iOS 中解密 DES 加密字符串?

ios - WKWebView 显示白屏,使用 native <->webview 通信

iPhone 的图片泄露了,但是哪里呢?

ios - 无法从 NSInputStream 读取自定义文件

ios - 下面的 NSObject 代码是多余的吗?

ios - Twitter 与 iOS 中的解析集成出现错误 1012

ios - 结构体数组在闭包之外不更新