iOS-TextKit学习

2017-10-09  本文已影响0人  小猫仔

       先说层次关系,TextKit是对CoreText的封装,这个是Apple做的封装,避免了我们直接操作CoreText的麻烦,毕竟CoreText是C写的。主要是通过NSTextStorage,NSLayoutManager,NSTextContainer等类去处理文本的存储和文本布局的。

NSTextStorage,表示存储一段需要被处理的原始文本字符串,它是NSMutableAttributedString的subclass,同样保存着该文本字段的属性设置。该类长用来管理NSLayoutManager的增减。

- (void)addLayoutManager:(NSLayoutManager *)aLayoutManager;

- (void)removeLayoutManager:(NSLayoutManager *)aLayoutManager;

NSLayoutManager,文本布局的管理对象,管理着NSTextContainer对象,负责对文的渲染。

NSTextContainer,决定能够显示内容的区域。

应用

UITextView是UITextContainer的接受者,我们可以通过UITextContainer创建一个textview对象。

[UITextView alloc]initWithFrame:<#(CGRect)#> textContainer:<#(nullable NSTextContainer *)#>];

创建textContainer对象时候,同步创建了NSLayoutManager对象和NSTextStorage对象。

NSString * text = @"日照香炉生紫烟,遥看瀑布挂前川。/n

飞流直下三千尺,疑是银河落九天。"

paragraphyDict = [NSMutableDictionarydictionary];//富文本的各种段落属性

UIColor*textColor = [UIColorhexString:@"#666666"];

[paragraphyDict setValue:textColor forKey:NSForegroundColorAttributeName];

UIFont*textFont = [UIFontsystemFontOfSize:13.f];

[paragraphyDict setValue:textFont forKey:NSFontAttributeName];

//创建段落样式

NSMutableParagraphStyle *style= [[NSMutableParagraphStyle alloc] init];

style.lineSpacing =8.5f;

style.paragraphSpacing =25.f;

style.firstLineHeadIndent =20.f;

[paragraphyDict setValue:style forKey:NSParagraphStyleAttributeName];

returnattributes;

}

_textStorage = [NSTextStorage alloc]initWithString:text attributes:paragraphyDict];

//

_layoutManager = [[NSLayoutManager alloc] init];

[_textStorage addLayoutManager:_layoutManager];

//textContainer 对象

_textContainer = [[NSTextContainer alloc] init];

CGFloat width  = SCREEN_WIDTH -20*2;

CGSize size = CGSizeMake(width, MAXFLOAT);

_textContainer.size = size;

[_layoutManager addTextContainer:_textContainer];

这是textkit应用的一种最简单的基本用法。

上一篇下一篇

猜你喜欢

热点阅读