我有一个基于集合视图的布局,具有不同的单元格大小,具体取决于内容。常规单元格为200x200像素,但如果没有内容,则显示与集合视图本身大小相同的单元格。
我用
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
计算正确的尺寸。
然而,我对单元格的子视图不会更新其约束。单元格非常简单,只是一个应该在单元格超视图中居中的UILabel。我有一个水平和一个垂直中心约束(也试图将每个边缘固定到superview)。结果是子视图的大小和位置与Interface Builder(Storyboard)中输入的大小和位置相同。
我为单元格和标签设置了背景颜色,可以看到单元格的大小正确,但标签却没有。
这个问题只存在于iOS7中,并且在iOS8中应该可以正常工作。
请帮忙!
答案 0 :(得分:11)
谢谢Stackover流程相关问题窗格!找到了这个帖子,它解决了我的问题。
Auto Layout in UICollectionViewCell not working
我把它放在我的UICollectionViewCell子类中:
- (void)setBounds:(CGRect)bounds {
[super setBounds:bounds];
self.contentView.frame = bounds;
}
答案 1 :(得分:3)
对于我来说,当问题出现在带有swift 2的IOS9上时。我刚刚调用了awakeFromNib()
并在autoresizingMask
中设置了UICollectionViewCell
。
我的UICollectionViewCell看起来像这样 - :
override func awakeFromNib() {
self.contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth , UIViewAutoresizing.FlexibleHeight]
}