YYText使用篇(二)

作者: 刀客传奇 | 来源:发表于2017-06-06 00:18 被阅读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的使用方法,包括基本方法还有就是高亮状态,未完,待续~~~~

    大庆红旗泡

    相关文章

      网友评论

        本文标题:YYText使用篇(二)

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