0

我有一个多行 UILabel,它的动态文本是我希望格式化的。我需要做的唯一格式化是增加行高,以便一个标签中两行的高度差异更大。

问题 1:如何通过 NSAttributedString 进行操作?我尝试过,但格式非常“非 UIKit”,因此令人困惑,文档非常有限。

问题 2:我可以看到属性文本可以通过 Interface Builder 添加,但这当然是针对静态文本的。有什么方法可以让我在 IB 中设置属性,然后通过代码提供文本,因为我希望对所有文本而不是部分文本进行格式化?

4

1 回答 1

0

在界面生成器中,您可以设置自定义属性/属性。您可以在 UILabel 上添加一个添加属性 CSSStyle 的类别。然后在 setCSSStyle 中,您将获取当前在文本上的 NSString,将其更改为 NSAttributedString 并通过 setAttributedText 进行设置。

要转换您放入此属性的 CSS 样式,您将使用像我的 DTCoreText 这样的框架,或者如果这对您来说很大,那么您可以简单地使用一个快速&肮脏的 CSS 解析器(我在 DTCoreText 中的 NSScanner 上构建了一个)并进行转换您需要 NSAttributedString 属性的属性。

想一想,您可能希望在这样的属性上设置一个 HTML 字符串,因为这样您就可以以不同的方式格式化不同的单词。DTCoreText 有一种将 HTML 转换为 NSAttributedString 的方法,然后您将再次通过标准设置器进行设置。

于 2012-12-23T20:25:39.013 回答