在实习中要实现下图中NavigationBar上的效果,经过考虑后认为使用NSAttributedString最为合适
根据官方文档介绍,Attributed string objects可以拥有一些字符串的属性(如字体、间距等)并将其选择性的应用到相关联的字符串上。比如图中的字符串就是通过取出换行符前后两部分的NSRange,再分别应用不同fontsize实现的。
NSAttributedString也有对应的NSMutableAttributedString版本用以需要改变的字符串,两者与CFAttributedString和CFMutableAttributedString关系为toll-free。
需要注意的是NSAttributedString并不是NSString的子类,而是NSAttribtedString包含一个NSString object并向其赋予一些attributes,这些attributes由NSDictionary存储。也因为如此,NSAttributedString不能直接和NSString做等于比较判断。此外NSAttributedString也实现了NSCopy和NSMutableCoping协议,因此可以很方便的在两种类型之间进行转换。
Attributed String的基本使用
创建方式:
1.initWithString:或initWithString:Attributeds:或initWithAttributedString:方法
例如:
NSFont *font = [NSFont fontWithName:@"Palatino-Roman" size:14.0];
NSDictionary *attrsDictionary =
[NSDictionary dictionaryWithObject:font
forKey:NSFontAttributeName];
NSAttributedString *attrString =
[[NSAttributedString alloc] initWithString:@"strigil"
attributes:attrsDictionary];
2.通过RTF创建(Attributes从富文本得到)
3.通过HTML创建(Attributes从HTML得到)
此外,AttributedString也支持获取当前字符串上的属性及其范围,也可以再进一步修改。
附:NSAttributedString所支持的标准属性