自动布局 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 列表布局问题