81

NSAttributedString对我来说真的难以理解。

我想将 a 设置UILabel为具有不同大小的文本,并且我NSAttributedString认为这是要走的路,但是我无法获得有关此文档的任何地方。

如果有人可以帮助我举一个具体的例子,我会很高兴。

例如,假设我想要的文本是:

(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"

有人可以告诉我怎么做吗?甚至,一个简单明了的参考资料,我可以自己学习?我发誓我已经尝试通过文档,甚至通过 Stack Overflow 上的其他示例来理解这一点,但我就是不明白。

4

4 回答 4

166

你会做这样的事情……</p>

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
              value:[UIFont systemFontOfSize:20.0]
              range:NSMakeRange(24, 11)];

这将在 20 磅文本中设置最后两个单词;字符串的其余部分将使用默认值(我相信是 12 分)。设置文本大小可能令人困惑的是您必须同时设置字体大小——每个UIFont对象都封装了这两个属性。

于 2013-08-21T19:18:36.510 回答
22

斯威夫特 3 解决方案

此外,您可以使用该append函数而不是在 ObjC 或 Swift 中指定索引:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                           attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ])

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                            attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ]))
于 2017-01-14T09:15:14.273 回答
18

[更新] Swift 5 解决方案:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                           attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18)]);

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                            attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 36)]));

斯威夫特 4 解决方案:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                       attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)]);

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                        attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]));
于 2017-11-23T09:31:38.237 回答
-1

如果你想用简单的方法来做,我使用了一个名为OHAttributedLabel的 git repo,它在 NSAttributedString 上提供了一个类别。它使您可以执行以下操作:

NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"];
[mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]];
mystring.font = [UIFont systemFontOfSize:14];

如果您不想使用 3rd 方库,请查看此链接以获取有关如何开始使用属性字符串的体面教程。

于 2013-08-21T19:17:01.200 回答