我有UICollectionViewController
和UICollectionViewCell
。
我希望从UICollectionViewCell
的边界到UICollectionViewController
的边界有一个前导和尾随空格,所以当方向改变时,我的单元格将调整为新的水平边界。
通常如何完成?
编辑:如果有帮助,我正在使用estimatedItemSize
来计算UICollectionViewFlowLayout
中的尺寸。
答案 0 :(得分:0)
好的大部分都解决了。因为我正在使用iOS 8的自动细胞大小调整(如estimatedItemSize
),所以我需要在我的单元格中实现preferredLayoutAttributesFittingAttributes
。这是我的实施:
- (UICollectionViewLayoutAttributes * _Nonnull)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes * _Nonnull)layoutAttributes {
UICollectionViewLayoutAttributes *attr = [layoutAttributes copy];
CGRect newFrame = attr.frame;
self.frame = newFrame;
[self setNeedsLayout];
[self layoutIfNeeded];
CGFloat desiredHeight = [self.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
newFrame.size.height = desiredHeight;
newFrame.size.width = _containerWidth - 20;
attr.frame = newFrame;
return attr;
}
其中_containerWidth
是我单元格中的属性。我在我的collectionview中的_containerWidth
中设置了我的单元格cellForItemAtIndexPath
。
虽然可能有一种更优雅的方法,但我只是在轮换期间在集合视图上调用reloadData
。
我暂时放弃了调整屏幕旋转大小的细节,因为它的错误,但这应该足以满足这个问题的目的。如果有人找到更好的解决方案,我会打开这个问题。