ios - 如何根据文本使 UICollectioncell 宽度动态

标签 ios swift dynamic uicollectionview

伙计们,我想像这样更改单元格的大小 enter image description here

自动调整到文本。我能做到的是 enter image description here

我试过搜索但无法找到解决方案。我怎样才能使它动态化为文本。 标签来自模型类,颜色和背景从单元格的自定义类改变。

最佳答案

它在下面的答案中有解释。

HorizontalCollectionView Content width and spacing

用关联字体计算字符串的大小。

extension String {
    func size(with font: UIFont) -> CGSize {
        let fontAttribute = [NSAttributedString.Key.font: font]
        let size = self.size(withAttributes: fontAttribute)
        return size
    }
}

collectionView(_, collectionViewLayout:_, sizeForItemAt) 中返回计算出的宽度和 collectionView 的高度。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let newWidth = titles[indexPath.row].size(with: labelFont!).width + 10 //Added 10 to make the label visibility very clear
    return CGSize(width: newWidth, height: collectionView.bounds.height)
}

关于ios - 如何根据文本使 UICollectioncell 宽度动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53520998/

相关文章:

ios - iOS中的NSNumber等效错误

swift - 使用时区转换字符串时获取错误日期

ios - 最小化 iOS 应用程序大小

php - onchange 后下拉选择值重置

ios - 无法更改 UISearchBar 中取消按钮的标题

iOS:删除 UINavigationBar 动画

ios - 向已批准的 iOS 应用程序添加另一个 IAP

ios - 如何将 instantiateViewControllerWithIdentifier 设置为全局变量?

java - 执行存储在数据库中的 Java 代码

c# - 使用 LinFu 生成动态代理