在iOS中自我调整大小集合查看单元格

时间:2016-07-16 09:19:58

标签: ios iphone xcode uitableview uicollectionview

我使用自动布局实现了UICollection视图单元格。它工作正常。

但是我的细胞高度是动态的,因此细胞应根据约束条件改变其高度。

但高度在任何情况下都不会改变。

我的代码

- (void)viewDidLoad {
    [super viewDidLoad];

        UICollectionViewFlowLayout *flowlayout = (UICollectionViewFlowLayout*)_col.collectionViewLayout;
        flowlayout.estimatedItemSize = CGSizeMake(self.view.frame.size.width - 30, 600);
}

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    FirstCell *cell = [_col dequeueReusableCellWithReuseIdentifier:@"FirstCell" forIndexPath:indexPath];
    return  cell;
}

故事板

enter image description here

模拟器

enter image description here

所有标签都是多行

帮我解决这个问题

感谢您的时间

2 个答案:

答案 0 :(得分:0)

请按照下面的内容来实现自我调整收集细胞。

1)与表格单元格相同,使用约束或覆盖-sizeThatFits:。

2)覆盖 - [UICollectionReusableView preferredLayoutAttributesFittingAttributes:]调整由UICollectionViewLayout确定的布局属性。

3)UICollectionViewFlowLayout上的新的estimatedItemSize属性,相当于UITableView上的estimatedRowHeight。

答案 1 :(得分:0)

在iOS 10之前的iOS中没有自我调整大小的集合视图单元格。(Apple在WWDC视频中声称此功能存在,但事实并非如此。)

您必须实现委托方法collectionView:layout:sizeForItemAtIndexPath以提供每个单元格的大小。如果你愿意,它可以调用systemLayoutSizeFittingSize:来使用内部约束来做到这一点;但是运行时不会神奇地为你做这件事。