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

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

【问题讨论】:

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

标签: ios swift swift3


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多