如果用户个人资料上没有帖子,我想显示标签。我在这里复制了一个答案的代码,它是
func setEmptyMessage(_ message: String) {
let messageLabel = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 30))
messageLabel.text = message
messageLabel.textColor = .black
messageLabel.numberOfLines = 0
messageLabel.textAlignment = .center
messageLabel.font = UIFont.systemFont(ofSize: 17, weight: .regular)
messageLabel.sizeToFit()
messageLabel.clipsToBounds = true
self.collectionView.backgroundView = messageLabel
}
func restore() {
self.collectionView.backgroundView = nil
}
使用中
// Return users uploaded posts
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if posts.count == 0 {
self.setEmptyMessage("No Posts")
} else {
self.restore()
}
return posts.count
}
该代码效果很好,需要时会显示标签。唯一的问题是我有一个集合视图标头,当我下拉刷新标头与标签混合的视图时。当我下拉刷新时如何隐藏标签或以某种方式在节标题下赋予固定的约束?
我真的不知道是否要调整header
的高度,可以使用代理方法UICollectionViewDelegateFlowLayout
来调整高度>
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
if posts.count == 0 {
return CGSize.zero
}else{
return CGSize(width: view.bounds.size.width, height: 50)
}
}