具有两个不同字体大小的NSAttributedString示例?


80

NSAttributedString 对我来说真的很坚不可摧。

我希望将a设置UILabel为具有不同大小的文本,并且我NSAttributedString想走这条路,但是关于此文档我什么也收不了。

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

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

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

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

Answers:


163

你会做这样的事情...

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对象都封装了这两个属性。


请查看此答案以了解SWIFT范围:stackoverflow.com/a/27041376/1736679
Efren

20

Swift 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) ]))

13

Swift 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)]));

-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];

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.