根据UILabel大小展开UILabel和UICollectionView单元格

时间:2016-01-27 23:39:22

标签: ios objective-c uicollectionview uilabel

我通过以下方式设置了UICollectionView:

enter image description here

它说“漂亮”的地方是UILabel。目前,如果文本超出标签的大小,我会截断文本。

有没有办法垂直扩展UILabel和CollectionViewCell以适应所有文本?

谢谢!

编辑:

到目前为止我已实施的内容:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    CollectionViewCellimage *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"birthdayCollView" forIndexPath:indexPath];
    PhotoClass *photoClass = [arrBirthdayPhotos objectAtIndex:indexPath.row];

    cell.lblDescription.text = photoClass.description;
    // same implementation for other fields
}

enter image description here

1 个答案:

答案 0 :(得分:0)

像这样设置单元格的约束。

  • 第一个标签:上,左,右,下到图像。 (如果这只是单行,也是高度)
  • 图像:( CenterX,宽度)或(左,右)和高度,从底部到第二个标签。
  • 第二标签: 左对齐,右对齐图像,numberOfLines = 0,底部约束为 BottomView。
  • BottomView:底部约束到superView,高度,左边, 右。

然后在视图控制器中为collectionView设置 estimatedItemSize

//Set CollectionView Layout

[self.collectionView setCollectionViewLayout:self.flowLayout];
self.flowLayout.estimatedItemSize = CGSizeMake(width, height);



-(UICollectionViewFlowLayout *)flowLayout{


if(!_flowLayout) {

    _flowLayout = [[UICollectionViewFlowLayout alloc] init];
    [_flowLayout setSectionInset:UIEdgeInsetsMake(topSpacing, leftMargin, bottomSpacing, rightMargin)];
    [_flowLayout setMinimumInteritemSpacing:cellSpacing];
    [_flowLayout setMinimumLineSpacing:lineSpacing];
    [_flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
}

  return _flowLayout;
}