如何使Label第一行文字与其他行相比少一些

时间:2018-10-22 11:00:30

标签: ios

我想要这样的东西,第一行文字应根据评级按钮的宽度来换行,而评级按钮的宽度可以更小或更大。

enter image description here

如果有人有主意,请给出答案。

2 个答案:

答案 0 :(得分:2)

AFAIK UILabel没有这种功能,但是您可以通过使用UITextView实现此行为。您可以将其调整为看起来像您的标签,然后为其文本容器设置排除路径,如下所示:

let exclusionPath = UIBezierPath(rect: textView.convert(button.frame, from: button.superview))
textView.textContainer.exclusionPaths = [exclusionPath]

如果您还想根据第一行中的可用宽度更改按钮的宽度,则可以设置最小宽度的排除路径框架(根据文本宽度和按钮中的插入内容),然后计算第一行中的可用空间,例如与this answer中提到的方法相同(它显示了如何计算最后一行的宽度,但对第一行的宽度却非常相似)

答案 1 :(得分:0)

只需尝试使用此代码,它将对您有帮助

myMutableString = NSMutableAttributedString(string: myString, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 18.0)!])

myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:4))

myMutableString.addAttribute(NSFontAttributeName, value: UIFont(name: "SFUIText-Bold", size: 14)!, range: NSRange(location:2,length:4))

labName.attributedText = myMutableString