CollectionView具有标题和自定义布局。 当我点击单元格时,有两种方法正常工作。 1)didSelectItemAt 2)viewforsupplementaryelementofkind 我单击单元格并scrollToItem到页面的开头。 无法动态检测标题中的detailPhotoStory大小。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="myField" readonly="readonly" />
<button>Set value</button>
// viewForSupplementaryElementOfKind
var headerHeight: CGFloat = 0.0
var headerView: DetailCollectionReusableView?
// didSelectItemAt
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String,at indexPath: IndexPath) ->UICollectionReusableView {
if kind == UICollectionElementKindSectionHeader
{
headerView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader,
withReuseIdentifier: "detailCollectionReusableView",
for: indexPath) as? DetailCollectionReusableView
headerView?.detailPhotoStory.text = PhotoItemArraySelected[indexPath.row].photoStory
headerView?.setNeedsLayout()
headerView?.layoutIfNeeded()
headerHeight = 380
headerHeight += (headerView?.detailPhotoStory.frame.height)!
return headerView!
}
return UICollectionReusableView()
}
答案 0 :(得分:0)
您可以像这样创建String扩展名,并根据宽度和使用的字体使用它来获取标签高度。您可以使用返回的高度来指定单元格的高度。
extension String {
func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
return boundingBox.height
}
}
来源为this ans。