CoreText图文混排ios

YYText使用篇(二)

2017-06-06  本文已影响478人  刀客传奇

版本记录

版本号 时间
V1.0 2017.06.05

前言

YYText是一个专门处理文字的框架,有了它处理文字变得非常方便,这一篇我继续介绍YYText的使用方法,希望对大家能有所帮助。大家还可以参考:
1.YYText使用篇(一)

一、YYText基本属性

这里先介绍YYText的基本属性用法,直接看代码。

#import "JJTextVC.h"
#import "YYText.h"

@interface JJTextVC ()

@end

@implementation JJTextVC

#pragma mark - Override Base Function

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    self.title = @"YYText";
    
    //属性文本
    [self attributeStr];
}

#pragma mark - Object Private Function

//属性文本
- (void)attributeStr
{
    //1.创建一个属性文本
    NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:@"旧时月色,算几番照我,梅边吹笛?唤起玉人,不管清寒与攀摘.何逊而今渐老,都忘却,春风词笔.但怪得,竹外疏花,春冷入瑶席.江国,正寂寂.叹寄与路遥,夜雪初积.翠尊易泣,红萼无言耿相忆.常记曾携手处,千树压.梅湖寒碧,又片片吹尽也,何时得见? "];
    
    //2.为文本设置属性
    attributeStr.yy_font = [UIFont boldSystemFontOfSize:18.0];
    [attributeStr yy_setColor:[UIColor blueColor] range:NSMakeRange(0, 50)];
    attributeStr.yy_lineSpacing = 20.0;
    
    //3.赋值给YYLabel
    YYLabel *yyLabel = [[YYLabel alloc] init];
    yyLabel.attributedText = attributeStr;
    yyLabel.numberOfLines = 0;
    yyLabel.frame = CGRectMake(0.0, 64.0, self.view.bounds.size.width, 500.0);
    [self.view addSubview:yyLabel];
}

@end

看结果图

属性文本

二、YYText高亮状态简单应用

YYText的高亮状态采用下面的方法:

/**
 Convenience method to set text highlight
 
 @param range           text range
 @param color           text color (pass nil to ignore)
 @param backgroundColor text background color when highlight
 @param userInfo        user information dictionary (pass nil to ignore)
 @param tapAction       tap action when user tap the highlight (pass nil to ignore)
 @param longPressAction long press action when user long press the highlight (pass nil to ignore)
 */
- (void)yy_setTextHighlightRange:(NSRange)range
                           color:(nullable UIColor *)color
                 backgroundColor:(nullable UIColor *)backgroundColor
                        userInfo:(nullable NSDictionary *)userInfo
                       tapAction:(nullable YYTextAction)tapAction
                 longPressAction:(nullable YYTextAction)longPressAction;

下面我们看代码

#import "JJTextVC.h"
#import "YYText.h"

@interface JJTextVC ()

@end

@implementation JJTextVC

#pragma mark - Override Base Function

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor lightTextColor];
    
    self.title = @"YYText";
    
    //高亮状态
    [self highlightState];
}

#pragma mark - Object Private Function

//高亮状态
- (void)highlightState
{
    //1.创建一个属性文本
    NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:@"旧时月色,算几番照我,梅边吹笛?唤起玉人,不管清寒与攀摘.何逊而今渐老,都忘却,春风词笔.但怪得,竹外疏花,春冷入瑶席.江国,正寂寂.叹寄与路遥,夜雪初积.翠尊易泣,红萼无言耿相忆.常记曾携手处,千树压.梅湖寒碧,又片片吹尽也,何时得见? "];
    
    //2.为文本设置属性
    attributeStr.yy_font = [UIFont boldSystemFontOfSize:18.0];
    attributeStr.yy_lineSpacing = 20.0;
    
    //3.设置文本的高亮属性
    [attributeStr yy_setTextHighlightRange:NSMakeRange(0, 50)
                                     color:[UIColor redColor]
                           backgroundColor:[UIColor yellowColor]
                                  userInfo:nil
                                 tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
        
        NSLog(@"我被点击了");
    }
                           longPressAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
    }];
    
    //4.赋值给YYLabel
    YYLabel *yyLabel = [[YYLabel alloc] init];
    yyLabel.attributedText = attributeStr;
    yyLabel.numberOfLines = 0;
    yyLabel.frame = CGRectMake(0.0, 64.0, self.view.bounds.size.width, 500.0);
    [self.view addSubview:yyLabel];
}

@end

下面我们看gif图

高亮状态

下面看控制台输出

2017-06-05 23:38:29.387 YYTextDemo[2964:76722] 我被点击了
2017-06-05 23:38:30.718 YYTextDemo[2964:76722] 我被点击了
2017-06-05 23:38:31.221 YYTextDemo[2964:76722] 我被点击了
2017-06-05 23:38:31.686 YYTextDemo[2964:76722] 我被点击了


三、YYText高亮状态详细应用

下面详细设置YYText的高亮状态,可以看代码。

#import "JJTextVC.h"
#import "YYText.h"

@interface JJTextVC ()

@end

@implementation JJTextVC

#pragma mark - Override Base Function

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor lightTextColor];
    
    self.title = @"YYText";

    //高亮状态的详细设置
    [self highlightStateDetailSetting];
}

#pragma mark - Object Private Function

//高亮状态详细设置
- (void)highlightStateDetailSetting
{
    //1.创建一个属性文本
    NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:@"旧时月色,算几番照我,梅边吹笛?唤起玉人,不管清寒与攀摘.何逊而今渐老,都忘却,春风词笔.但怪得,竹外疏花,春冷入瑶席.江国,正寂寂.叹寄与路遥,夜雪初积.翠尊易泣,红萼无言耿相忆.常记曾携手处,千树压.梅湖寒碧,又片片吹尽也,何时得见? "];
    
    //2.为文本设置属性
    attributeStr.yy_font = [UIFont boldSystemFontOfSize:18.0];
    attributeStr.yy_lineSpacing = 20.0;
    
    //3.创建高亮属性
    YYTextBorder *border = [YYTextBorder borderWithFillColor:[UIColor magentaColor] cornerRadius:4];
    
    YYTextHighlight *highlight = [[YYTextHighlight alloc] init];
    [highlight setColor:[UIColor blueColor]];
    [highlight setBackgroundBorder:border];
    highlight.tapAction = ^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect) {
        NSLog(@"tap text range:...");
        // 你也可以把事件回调放到 YYLabel 和 YYTextView 来处理。
    };
    
    //4.设置文本的高亮属性
    [attributeStr yy_setTextHighlight:highlight range:NSMakeRange(0, 50)];
    
    //5.赋值给YYLabel
    YYLabel *yyLabel = [[YYLabel alloc] init];
    yyLabel.attributedText = attributeStr;
    yyLabel.numberOfLines = 0;
    yyLabel.frame = CGRectMake(0.0, 64.0, self.view.bounds.size.width, 500.0);
    [self.view addSubview:yyLabel];
}

@end

下面看gif结果

高亮状态设置

看输出

2017-06-05 23:58:04.457 YYTextDemo[3258:91471] tap text range:...
2017-06-05 23:58:14.652 YYTextDemo[3258:91471] tap text range:...
2017-06-05 23:59:48.807 YYTextDemo[3258:91471] tap text range:...
2017-06-06 00:00:35.790 YYTextDemo[3258:91471] tap text range:...
2017-06-06 00:00:51.180 YYTextDemo[3258:91471] tap text range:...

后记

这里主要讲述了三种YYText的使用方法,包括基本方法还有就是高亮状态,未完,待续~~~~

大庆红旗泡
上一篇下一篇

猜你喜欢

热点阅读