gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:42:27 26 4
gpt4 key购买 nike

我正在开发一个自定义键盘,我只想使用一个 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/

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