我在UICollectionView中有头(UICollectionReusableCell),其高度需要是可变的。我如何根据其内容的高度调整自己的大小?
我不需要支持iOS 7,而Autolayout解决方案更受欢迎(如果存在)。
答案 0 :(得分:8)
这就是我解决它的方式。我希望它更优雅。
UILabel
,使numberOfLines
值为0.这样可以自行调整大小。collectionView(_:layout:referenceSizeForHeaderInSection:)
中实例化xib中的标头。我们会用它来计算尺寸。setNeedsLayout
和layoutIfNeeded
。systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
计算身高。注意:
标题必须移出故事板并移入xib,因为从dequeuReusableSupplementaryViewOfKind
调用systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
会导致崩溃。
标题视图必须能够计算正确的高度,只知道其内容和所需的宽度。这需要一些摆弄约束。
答案 1 :(得分:-2)
这是我的方法 -
在视图控制器中 -
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = yourCollectionView.dequeueReusableCellWithReuseIdentifier("YourCustomCell", forIndexPath: indexPath) as! YourCustomeCell
...
cell.setUpCell()
return cell
}
在View Cell中 -
@IBOutlet weak var headerView: UIView!
@IBOutlet weak var contentView: UIView!
func setUpCell() {
let percentageYouWant = 0.3
let newFrame = CGRect(x: 0, y: 0, width: contentView * percentageYouWant, height: contentView * percentageYouWant)
headerView.frame = newFrame
}