Example of NSAttributedString with two different font sizes?

随声附和 提交于 2019-11-27 00:43:45

You would do something like this…

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

This will set the last two words in 20-point text; the rest of the string will use the default value (which I believe is 12 points). The thing that might be confusing about setting the text size is that you have to set the typeface and the size at the same time—each UIFont object encapsulates both of those properties.

Swift 3 Solution

Also, you can use the append function instead of specifying indices in ObjC or 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) ]))
Kunal Shah

Swift 4 Solution:

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

If you want to do it the easy way, there is a git repo called OHAttributedLabel that I use that provides a category on NSAttributedString. It lets you do things like:

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

If you don't want to use a 3rd party lib, check out this link for a decent tutorial on how to get started with attributed strings.

Swift 4.2 Solution:

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)]))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!