我试图为待办事项列表类型的应用制作详细信息屏幕。这是详细屏幕目前的样子:
这是UICollectionViewController
,带有标题。标头包含2个UILabel
个对象和一个UITextView
对象。这些对象的布局由垂直UIStackView
管理。 UIView
用于设置白色背景。
我在运行时定义此UICollectionReusableView
的高度时遇到了一些困难。任何建议表示赞赏。
答案 0 :(得分:0)
以下是如何在没有XIB文件的情况下使用自动布局处理自定义UICollectionViewReusableView的方法。
referenceSizeForHeaderInSection
委托方法。setNeedsLayout
和layoutIfNeeded
注意:我不是这个解决方案的忠实粉丝,因为它每次都会将自定义视图添加到collectionview的超级视图中,以执行计算。我没有注意到任何性能问题。
注意#2:我将其视为临时解决方案,并在发布后转移到自我调整补充视图。
我正在使用PureLayout进行自动布局。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
let header = CustomHeaderView()
header.isHidden = true;
self.view.addSubview(header)
header.autoPinEdge(toSuperviewEdge: .leading)
header.autoPinEdge(toSuperviewEdge: .trailing)
header.autoPin(toTopLayoutGuideOf: self, withInset: 0)
header.setupHeader(withData: self.data)
header.setNeedsLayout()
header.layoutIfNeeded()
header.removeFromSuperview()
return header.frame.size
}