如何在带有标题的集合视图中设置标签约束

问题描述 投票:0回答:1

如果用户个人资料上没有帖子,我想显示标签。我在这里复制了一个答案的代码,它是

   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 
    }

该代码效果很好,需要时会显示标签。唯一的问题是我有一个集合视图标头,当我下拉刷新标头与标签混合的视图时。当我下拉刷新时如何隐藏标签或以某种方式在节标题下赋予固定的约束?

ios swift uicollectionview label
1个回答
0
投票

我真的不知道是否要调整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)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.