UICollectionView单元格个别高度

时间:2014-12-10 19:50:19

标签: ios swift uicollectionview uicollectionviewcell

我有一个UICollextionView,它目前计算出UILabel的高度。每个标签都有自己的高度。我现在想对集合视图单元格做同样的事情。我似乎只能将它们全部改为相同。我该怎么办?感谢

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as ChatCellCollectionViewCell


    cell.backgroundColor = UIColor.whiteColor()
    cell.layer.cornerRadius = 10

    cell.textLabel.text = "\(messageArray[indexPath.row])"
    cell.nameLabel.text = "\(namesArray[indexPath.row])"


    cell.textLabel.numberOfLines = 0
    cell.textLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
    frame = cell.textLabel.frame
    cell.textLabel.sizeToFit()
    frame.size.height = cell.textLabel.frame.size.height
    cell.textLabel.frame = frame


    return cell
}

3 个答案:

答案 0 :(得分:1)

如果您正在使用Flow Layout,UICollectionViewDelegateFlowLayout协议会有一个名为collectionView:layout:sizeForItemAtIndexPath:的函数,您可以执行此操作。

答案 1 :(得分:0)

可以使用UICollectionViewFlowlayout完成,请参见此处:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html

滚动到指定流程布局中项目的大小

答案 2 :(得分:0)

将此方法添加到视图控制器

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{

CGFloat width=0.0;
CGFloat height=0.0;

if (IS_IPHONE_5){
    width=90;
    height=120;
}else if (IS_IPHONE_6){
    width=107;
    height=130;

}else if (IS_IPHONE_6_PLUS){
    width=125;
    height=150;

}else{
    width=90;
    height=120;

}

return CGSizeMake(width, height);

}

在设备检测位置您可以使用indexPath.row ..like

if (indexPath.row==0){
  // Your Code
  }

注意:它返回CGSize ..

我希望这个答案对你有所帮助。