美文网首页
iOS-TextKit学习

iOS-TextKit学习

作者: 小猫仔 | 来源:发表于2017-10-09 14:02 被阅读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应用的一种最简单的基本用法。

    相关文章

      网友评论

          本文标题:iOS-TextKit学习

          本文链接:https://www.haomeiwen.com/subject/ecmuyxtx.html