1. 程式人生 > >富文字新增顏色大小及點選事件,防止最後一句斷行顯示。

富文字新增顏色大小及點選事件,防止最後一句斷行顯示。

本文章為了方便引用YYText第三方對富文字的顯示以及點選事件進行自定義,當然也可以使用自帶的方法進行定製,不過自帶的方法使用起來較為繁瑣。例如點選事件,自帶的方法我們可以選擇使用一個隱藏的UIButton進行實現,也可以給文字新增連結,在連結觸發的代理中進行擷取操作,做出相關動作等。下面貼上程式碼。

//初始化所需展示字串

NSMutableAttributedString * str = [[NSMutableAttributedStringalloc] initWithString:@"春:盼望著,盼望著,東風來了,春天的腳步近了。一切都像剛睡醒的樣子,欣欣然張開了眼。山朗潤起來了,水漲起來了,太陽的臉紅起來了。小草偷偷地從土地裡鑽出來,嫩嫩的,綠綠的。"

];

    str.yy_font = [UIFontsystemFontOfSize:17];//設定展示字串大小

CGRect firstRect = [str boundingRectWithSize:CGSizeMake(self.view.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeadingcontext:nil];//計算當前所需高度

    [str yy_appendString:@"檢視詳情->>"];

//新增檢視詳情text

    [str addAttributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:14]} range:NSMakeRange(str.length - 7, 7)];//改變檢視詳情字型大小

    [str yy_setTextHighlightRange:NSMakeRange(str.length - 7, 7) color:[UIColorblueColor] backgroundColor:[UIColorwhiteColor] tapAction:^(UIView * _Nonnull containerView,

NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {

        NSLog(@"點選了");

    }];//使用YYText第三方改變檢視詳情的顏色以及點選事件

CGRect secondRect = [str boundingRectWithSize:CGSizeMake(self.view.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeadingcontext:nil];//計算含有檢視詳情的文字高度

    YYLabel * lable = [YYLabel new];//初始化一個YYLable

    lable.textColor = [UIColorblackColor];

    lable.numberOfLines = 0;

//對兩次高度進行比較

    if (secondRect.size.height > firstRect.size.height) {

        lable.frame = secondRect;

        [str yy_insertString:@"\n"atIndex:str.length - 7];//若第二次的大於第一次的,說明檢視詳情被折斷或者換行顯示,此時手動插入換行符

    }else{

        lable.frame = firstRect;

    }

    lable.attributedText = str;

    lable.center = self.view.center;

    [self.view addSubview:lable];


因為在網上找了半天,還是找不到一個能夠防止最後一句“檢視詳情-->”加上後導致斷行顯示的解決方法,就自己想著用了lable高度的比較進行判斷是否換行。如有不足請諒解。