我有一个UITableview
,它从数据库中获取数据,并将其显示在UILabel
中。我想将“ ... Read Less”的部分文字加粗,而其余部分则保留。下面的代码只是检查帖子中是否包含120个以上的字符,如果是,那么我在后面加上“ ... Read Less”,我想将其加粗。现在,我的整个帖子都以粗体显示,而不仅仅是附加的字符串,任何建议都很好
func HomeProfilePlaceTVC(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomeTVC", for: indexPath) as! HomeTVC
cell.post.tag = indexPath.row
if streamsModel.Posts[indexPath.row].count > 120 {
cell.post.text = String(streamsModel.Posts[indexPath.row]).appending(" ... Read Less")
cell.post.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)
}
else {
cell.post.text = streamsModel.Posts[indexPath.row]
}
return cell
}
答案 0 :(得分:1)
您可以创建这样的扩展名。
extension String {
func attributedString(with style: [NSAttributedString.Key: Any]? = nil,
and highlightedText: String,
with highlightedTextStyle: [NSAttributedString.Key: Any]? = nil) -> NSAttributedString {
let formattedString = NSMutableAttributedString(string: self, attributes: style)
let highlightedTextRange: NSRange = (self as NSString).range(of: highlightedText as String)
formattedString.setAttributes(highlightedTextStyle, range: highlightedTextRange)
return formattedString
}
}
并像这样调用此方法,以在中间将字符串制作为粗体
let descriptionText = "This is a bold string"
let descriptionText = descriptionText.attributedString(with: [.font: UIFont.systemFont(ofSize: 12.0, weight: .regular),
.foregroundColor: .black],
and: "bold",
with: [.font: UIFont.systemFont(ofSize: 12.0, weight: .bold),
.foregroundColor: .black])
输出:“这是一个粗体字符串”。您可以按如下所示将其设置为UILabel。
textLabel.attributedString = descriptionText
此方法可用于突出显示整个字符串中具有不同样式(例如粗体,斜体等)的任意范围的文本。 请告诉我是否有帮助。