如何使 UICollectionview 单元格高度动态化?

Saj*_*osh 5 ios uicollectionview uicollectionviewcell swift

我有一个UIcollectionview。Collectionview 有一些单元格。里面CollectionviewCell有一个文本视图。文本视图的内容是动态的。所以单元格高度应该是动态的。

怎么做?

Abe*_*eyh 3

1-添加UICollectionViewDelegateFlowLayout协议。
2-通过sizeForItemAtIndexPath在您的ViewController.
3-使用单元格的索引来获取您拥有的文本并计算它的高度和宽度。

class ViewController: UIViewController,UICollectionViewDelegateFlowLayout{

  func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
     let constraintRect = CGSize(width: self.view.frame.size.width, height: CGFloat.max)
     let data = myTextArray[indexpath.row];
     let boundingBox = data.boundingRectWithSize(constraintRect, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont(name: Constants.strings.fontName, size: 30)!], context: nil)
     return CGSizeMake(boundingBox.width, boundingBox.height); //(width,hight)
  }

}
Run Code Online (Sandbox Code Playgroud)