我正在用UICollection实现customcell视图。在这里,我需要创建基于标签字符串的动态宽度,并且需要设置。这里,我使用了下面的代码,表示不知道静态高度。如何做到这一点?

extension ViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return (items[indexPath.row] as String).size(withAttributes: nil)
        //return CGSize(width: label.frame.width, height: 33.5)
    }
}

最佳答案

根据要添加到collectionViewCell's中的width计算textlabel
假设itemsarrayString

extension ViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let textWidth = items[indexPath.row].size(withAttributes:[.font: UIFont.systemFont(ofSize: 20.0)]).width + 30.0 //30.0 is the extra padding
        let width = min(textWidth, 100.0) //100.0 is the max width
        return CGSize(width: width, height: collectionView.bounds.height)
    }
}

根据您的要求添加attributesheight

关于ios - 如何使用Swift为UICollectionView创建动态宽度和静态高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57922271/

10-09 19:25