【问题标题】:Custom UICollectionViewCell self size according to the label text根据标签文本自定义 UICollectionViewCell 自身大小
【发布时间】:2020-03-10 14:52:32
【问题描述】:

我创建了一个 UICollectionViewCell xib,并希望单元格根据标签文本的长度自动调整,如下图所示。

图片显示了我在原型单元上制作的内容。但无论我怎么尝试,当我使用 xib 时,单元格的大小都保持不变。

【问题讨论】:

    标签: ios swift uicollectionview uicollectionviewcell


    【解决方案1】:

    实现这个委托 UICollectionViewDelegateFlowLayout

        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    
            let market = self.markets[indexPath.row]
            let label = UILabel(frame: CGRect.zero)
            label.text =  market
            label.sizeToFit()
            return CGSize(width: label.frame.width, height: 25)
        }
    

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            let text = NSAttributedString(string: markets[indexPath.row])
            return CGSize(width: text.size().width, height: 25)
        }
    

    【讨论】:

      【解决方案2】:

      你也可以在 sizeForItemAt 中实现这个 只需插入“yourString”和“yourFont”:

      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
      
          let width = yourString.size(withAttributes: [NSAttributedString.Key.font: yourFont]).width
          return CGSize(width: width, height: 20) 
      }
      

      由于单元格的角半径,您可能需要在宽度上添加一些空间

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-20
        • 1970-01-01
        • 1970-01-01
        • 2014-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        相关资源
        最近更新 更多