YY系列---YYLabel、YYText初步使用

第一天

YYlabel使用場景:用于富文本局部文本響應點擊(至少我們公司如此),具體舉例,如社交類型的app,點擊評論區(qū)艾特的用戶名能響應點擊實現(xiàn)自定義的邏輯。

因為公司用了這個第三方,初次接觸,今天是第一天摸索,使用遇到的坑,做下記錄。以下有幾個重點,

  • 普通文本用YYText設置為富文本,YYLabel只需要將設置好的富文本賦值,做展示用。而不是你對YYlabel的text做屬性設置,如果只是對text做設置,那么用YYLabel和系統(tǒng)的UILabel是沒有什么區(qū)別的。
  • 要實現(xiàn)點擊效果,賦值富文本的這句代碼一定要寫在回調(diào)的后面,否則沒有點擊效果,具體代碼如下:
[attri_str yy_setTextHighlightRange:NSMakeRange(0, 5) color:[UIColor blackColor] backgroundColor:[UIColor blueColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
        NSLog(@"點擊的是---%@", text);
    }];
    
 yy_label.attributedText = attri_str;//(寫在后面)

Github YYText的地址

第二天

今天是周天,續(xù)昨晚接觸YYText,今天大概知道如何簡單使用YYtext用于開發(fā)。
先上效果圖,yy_label實現(xiàn)這樣的效果:文字居中,自動換行,可點擊,富文本

文字居中,自動換行,可點擊,富文本.gif

接下來是代碼,首先用YYText將普通字符串設置成富文本樣式;

    NSString *string = @"顏色設置---紅色---藍色---紫色---我能響應點擊---end";
    NSMutableAttributedString *attri_str = [[NSMutableAttributedString alloc] initWithString:string];
    attri_str.yy_alignment = NSTextAlignmentCenter;
    attri_str.yy_font = [UIFont systemFontOfSize:30];
    attri_str.yy_color = [UIColor blackColor];
    [attri_str yy_setFont:[UIFont boldSystemFontOfSize:35] range:[string rangeOfString:@"我能響應點擊"]];
    [attri_str yy_setColor:[UIColor redColor] range:[string rangeOfString:@"紅色"]];
    [attri_str yy_setColor:[UIColor blueColor] range:[string rangeOfString:@"藍色"]];
    [attri_str yy_setColor:[UIColor purpleColor] range:[string rangeOfString:@"紫色"]];
    [attri_str yy_setColor:[UIColor cyanColor] range:[string rangeOfString:@"我能響應點擊"]];

接著,創(chuàng)建YYLabel對象,界面布局;

    YYLabel *yy_label = [YYLabel new];
    //自動換行
    yy_label.numberOfLines = 0;
    yy_label.textAlignment = NSTextAlignmentCenter;
    //自動換行,改變label高度,即自適應高度,注音??:多行顯示的label,必須設置該屬性,否則需自行添加高度
    yy_label.preferredMaxLayoutWidth = CGRectGetWidth(self.view.frame) - 30;
//    yy_label.userInteractionEnabled = YES;----->***注音??:不需要添加***
    [self.view addSubview:yy_label];
    
    //我用的Masonry設置約束自動布局,其他布局方式自行摸索
    [yy_label mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.offset(100);
        make.left.offset(15);
       // ----->***注音??:已設置自適應高度屬性,不要再設定高度了,右邊的約束也無需添加,當然還是看具體開發(fā)需求,這里僅是簡單的Demo***
//        make.right.offset(-15);
//        make.height.mas_equalTo(150);
    }];

最后,將富文本賦值給yy_label

    NSString *actionStr = @"我能響應點擊";
    //注意??:這里如果設置了新的富文本顏色,那么顯示的是這里新設置的顏色值。
    [attri_str yy_setTextHighlightRange:[string rangeOfString:actionStr] color:[UIColor cyanColor] backgroundColor:[UIColor orangeColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
        NSLog(@"被點擊");
    }];
    //注意??:設置富文本屬性一定要放在設置高亮響應點擊這個方法的后面,就是上面的那個方法。否則,不會有點擊效果和觸發(fā)回調(diào)。
    yy_label.attributedText = attri_str;

補充

[string rangeOfString:actionStr],表示傳入actionStr返回,actionStrstring中的range。
而我開始想當然的用NSRangeFromString ,則是將NSRange的字符串轉化為NSRange,舉例:

    //將NSRange的字符串@"{1, 2}"轉化為NSRange
    NSRange str_range = NSRangeFromString(@"{1, 2}");
    NSLog(@"str_range is:%@", NSStringFromRange(str_range));

打印結果:

str_range is:{1, 2}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容