Swift 3:如何将内容包装在具有多个标签的 tableviewcell 中?

Posted

技术标签:

【中文标题】Swift 3:如何将内容包装在具有多个标签的 tableviewcell 中?【英文标题】:Swift 3 : How do you wrap content in a tableviewcell with multiple labels? 【发布时间】:2018-07-31 04:35:35 【问题描述】:

我一直在尝试解决这个问题。我为每个带有背景颜色的标签设置了约束。我将每个标签的换行符设置为自动换行,但这仍然不起作用。我正在寻找的是像自动换行一样的标签换行,无论它是否存在。谢谢。

【问题讨论】:

我建议您在您的UITableViewCell 中添加UICollectionView 同意@Kuldeep。您还需要 NSString 的 sizeWithAttributes 来决定 UICollectionViewCell 的大小。 ***.com/questions/23134986/… 我建议你在 'UITableViewCell' 中使用 TagListView 所以,如果标签超出范围,您希望标签自动移动到新行,对吗?如果是这样,您不能使用约束手动执行此操作。您必须计算每个标签的宽度。或者您可以使用 github.com/ElaWorkshop/TagListView 之类的库 【参考方案1】:

这是一种略有不同的方法。您可以使用属性字符串自定义每个标记词的外观。这有一些限制,但根据您的要求,它可能非常适合您。下面的代码是一个为您指明正确方向的示例,但是您可能仍需要编写额外的代码来正确包装空格或识别触摸事件。

let tags = ["Outdoors", "Working", "Learning"].map  " \($0) " 
let text = tags.joined(separator: "  ")
let ranges = tags.compactMap  text.range(of: $0) 

let attributedText = NSMutableAttributedString(string: text)

for range in ranges 
    attributedText.addAttributes([.backgroundColor: UIColor.green], range: NSRange(range, in: text))


textView.attributedText = attributedText

【讨论】:

以上是关于Swift 3:如何将内容包装在具有多个标签的 tableviewcell 中?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 3 Xcode 8 居中对齐多个标签

带有Swift的多个自定义单元格的UITableview

Swift - 如何在具有多个部分的 collectionView 上执行 BatchUpdates

如何将json对象的值设置为swift 3中tableView中动态呈现的视图中的标签?

如何在1项标签栏控制器中制作顶部标签栏以在swift中显示多个视图控制器?

如何在 Swift iOS 中创建一个通用的弹出视图控制器