Dmi*_*pov 8 ios autolayout uicollectionview uicollectionviewcell
我使用了collectionView的自动调整流程布局的功能
self.flow = [[UICollectionViewFlowLayout alloc] init];
self.flow.scrollDirection = UICollectionViewScrollDirectionVertical;
self.flow.sectionInset = UIEdgeInsetsZero;
self.flow.estimatedItemSize = CGSizeMake(320, 48);
Run Code Online (Sandbox Code Playgroud)
我希望单元格将填充CollectionView的宽度全宽(widthCell = widthCollectionView)
但我得到了整个尺寸的自动调整工作.我尝试使用内容压缩/拥抱优先级 - 不起作用.
随着CollectionView的宽度等于320px,我得到了标签内容大小的单元格大小.
约束水平:H:| -8- [img(48)] - 8- [label] -8- |
如何使自动调整仅适用于垂直而不适用于水平?
Dmi*_*pov 13
我找到了解决方案.
CollectionViewCell有一个委托preferredLayoutAttributesFittingAttributes
因此,此函数将layoutAttributes设置为estimatedItemSize
你需要做下一步(高度)
- (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes {
UICollectionViewLayoutAttributes *attr = [super preferredLayoutAttributesFittingAttributes:layoutAttributes]; //Must be called
CGRect frame = attr.frame;
frame.size.width = layoutAttributes.size.width; //Key here
attr.frame = frame;
return attr;
}
Run Code Online (Sandbox Code Playgroud)
相同的你可以做的更喜欢大小,宽度,所以使恒定的高度(frame.size.height = layoutAttributes.size.height).
如果你只是复制layoutAttributes并改变宽度,将无效!
你必须打电话给超级.
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |