YYtext简单使用

/**

文字属性

*/

-(void)test1

{

    NSString* YuJian=  @"听见 冬天的离开  我在某年某月醒过来  我想我等我期待 未来却不能理智安排 -- 阴天 傍晚车窗外 未来有一个人在等待 向左向右向前看  爱要拐几个弯才来 我遇见谁会有怎样的对白  我等的人他在多远的未来  我听见风来自地铁和人海 我排著队拿著爱的号码牌 我往前飞飞过一片时间海 我们也常在爱情里受伤害 我遇见谁会有怎样的对白  我等的人他在多远的未来  我听见风来自地铁和人海 我排著队拿著爱的号码牌 我往前飞飞过一片时间海 我们也常在爱情里受伤害 我看著路梦的入口有点窄 我遇见你是最美丽的意外 @终有一天我的谜底会揭开";

    

    YYLabel* label=[[YYLabel alloc]initWithFrame:CGRectMake(30, 50, Screen_Width-60, Screen_Height-100)];

    [self.view addSubview:label];

    label.numberOfLines=0;

    NSMutableAttributedString* atext=[[NSMutableAttributedString alloc]initWithString:YuJian];

    //设置字体大小

    [atext yy_setFont:[UIFont systemFontOfSize:20] range:atext.yy_rangeOfAll];

    //局部不同颜色

    NSRange range0=[[atext string]rangeOfString:@"冬天的离开"];

    [atext yy_setColor:[UIColor blueColor] range:range0];

    //设置行间距

    atext.yy_lineSpacing=10;

    //设置下划线

    NSRange range1=[[atext string]rangeOfString:@"我等的人" ];

    YYTextDecoration* deco=[YYTextDecoration decorationWithStyle:(YYTextLineStyleSingle) width:[NSNumber numberWithInt:5] color:[UIColor redColor]];

    [atext yy_setTextUnderline:deco range:range1];

    //阴影

    NSRange range2=[[atext string]rangeOfString:@"傍晚车窗外" options:nil];

    NSShadow*  shadow=[[NSShadow alloc]init];

    [shadow setShadowColor:[UIColor redColor]];

    [shadow setShadowBlurRadius:1];

    [shadow setShadowOffset:CGSizeMake(2, 2)];

    [atext yy_setShadow:shadow range:range2];

    //文本内阴影

    NSRange range3=[[atext string]rangeOfString:@"我在某年某月醒过来"];

    YYTextShadow* dow=[YYTextShadow new];

    dow.color=[UIColor yellowColor];

    dow.offset=CGSizeMake(0, 2);

    dow.radius=1;

    [atext yy_setTextShadow:dow range:range3];

    NSRange range4=[[atext string] rangeOfString:@"向左向右向前看"];

    [atext yy_setTextHighlightRange:range4 color:[UIColor redColor] backgroundColor:[UIColor grayColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {

        NSString* str=text.string;

        NSLog(@"你点击了 %@ ---range %ld", [str substringWithRange:range] ,range.length);

    }];

    label.attributedText=atext;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Bison中,yytext是一个全局变量,用于存放当前解析的token的文本内容。通常情况下,我们可以在Bison的语法规则中通过使用$1、$2等符号来引用yytext,这些符号代表了当前解析的token的文本内容。 例如,假设我们需要解析一个简单的表达式,表达式中只包含加、减、乘、除四种运算符和数字。那么我们可以定义如下的Bison语法规则: ``` %{ #include <stdio.h> %} %token NUMBER %token PLUS %token MINUS %token TIMES %token DIVIDE %% expr: NUMBER | expr PLUS expr | expr MINUS expr | expr TIMES expr | expr DIVIDE expr ; %% int main() { yyparse(); return 0; } int yyerror(const char *msg) { fprintf(stderr, "Error: %s\n", msg); return 0; } int yylex() { int c = getchar(); if (isdigit(c)) { ungetc(c, stdin); scanf("%d", &yylval); return NUMBER; } else if (c == '+') { return PLUS; } else if (c == '-') { return MINUS; } else if (c == '*') { return TIMES; } else if (c == '/') { return DIVIDE; } else if (c == '\n' || c == EOF) { return 0; } else { return -1; } } ``` 在上述代码中,我们定义了一个简单的表达式语法规则,其中每个token都有一个相应的词法分析器函数yylex()来生成。同时,我们还定义了一个yyerror()函数,用于处理语法错误。当Bison解析表达式时,它会自动将当前解析的token的文本内容存放到yytext中,并将其传递到语法规则中。 例如,当我们输入一个简单的表达式"1+2"时,Bison会先调用yylex()函数来获取第一个token,也就是数字"1",然后将其存放到yylval中,并返回NUMBER这个token类型。接下来,Bison会继续调用yylex()函数来获取下一个token,也就是加号"+",然后将其存放到yytext中,并返回PLUS这个token类型。最后,Bison会根据语法规则来解析表达式,并输出结果"3"。 可以看到,在Bison中使用yytext非常简单,我们只需要在语法规则中使用相应的符号$1、$2等来引用yytext即可。如果需要在Bison的代码中直接访问yytext,则可以直接使用全局变量yytext来获取其值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值