自动布局 UICollectionView iOS 8

Posted

技术标签:

【中文标题】自动布局 UICollectionView iOS 8【英文标题】:Autolayout UICollectionView iOS 8 【发布时间】:2014-10-03 11:36:21 【问题描述】:

我有一个 UICollectionView 添加到 UIView。我只想让集合视图随着方向的变化而调整大小,以便它适合超级视图(UIView)。添加布局约束后,缺少集合视图。我什至无法让第一个约束正常工作。(下)

NSLayoutConstraint *leftSideConstraint = [NSLayoutConstraint constraintWithItem:self.collectionView
                                                                                 attribute:NSLayoutAttributeLeading
                                                                                 relatedBy:NSLayoutRelationEqual
                                                                                    toItem:self.view
                                                                                 attribute:NSLayoutAttributeLeading
                                                                                multiplier:1.0
                                                                                  constant:10.0];

然后我将约束添加到 self.view。

我做错了什么?请帮忙!

更新: 这就是它的工作原理。我是自动布局的新手。我只是想一一满足这些限制,以确保它们都能正常工作:) 谢谢

    NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:self.collectionView
                                                               attribute:NSLayoutAttributeLeading
                                                               relatedBy:NSLayoutRelationEqual
                                                                  toItem:self.view
                                                               attribute:NSLayoutAttributeLeading
                                                              multiplier:1.0
                                                                constant:5.0];

NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:self.collectionView
                                                               attribute:NSLayoutAttributeTrailing
                                                               relatedBy:NSLayoutRelationEqual
                                                                  toItem:self.view
                                                               attribute:NSLayoutAttributeTrailing
                                                              multiplier:1.0
                                                                constant:-5.0];

NSLayoutConstraint *constraint3 = [NSLayoutConstraint constraintWithItem:self.collectionView
                                                               attribute:NSLayoutAttributeBottom
                                                               relatedBy:NSLayoutRelationEqual
                                                                  toItem:self.view
                                                               attribute:NSLayoutAttributeBottom
                                                              multiplier:1.0
                                                                constant:-5.0];

NSLayoutConstraint *constraint4 = [NSLayoutConstraint constraintWithItem:self.collectionView
                                                               attribute:NSLayoutAttributeTop
                                                               relatedBy:NSLayoutRelationEqual
                                                                  toItem:self.view
                                                               attribute:NSLayoutAttributeTop
                                                              multiplier:1.0
                                                                constant:5.0];


[self.view addConstraints:@[constraint1, constraint2, constraint3, constraint4]];

【问题讨论】:

【参考方案1】:

您不能只添加一个约束以使视图正确定位。它需要知道它的 x 和 y 位置、宽度和高度。有了这个约束,你只给了它 x 位置。您还需要三个约束,例如。尾随,顶部和底部或顶部,宽度,高度。基本上任何一组可以完整描述视图位置、宽度和高度的约束。

【讨论】:

以上是关于自动布局 UICollectionView iOS 8的主要内容,如果未能解决你的问题,请参考以下文章

IOS---UICOLLECTIONVIEW详解和常用API翻译

iOS 14 上的 UICollectionView 列表布局问题

iOS核心笔记——UICollectionView-布局对象

UICollectionView 上的动画自动布局约束更改

UICollectionView 自动布局约束正在打破

ios UICollectionView简单说明