UILabel自動計算行高 而且 最多顯示n行

該段代碼做用(iOS開發)字體

一、根據文本動態計算label須要的高度spa

二、能夠添加最多顯示多少行 .net

      例如:在論壇回覆裏邊有「點擊查看全文功能」 默認的最多隻顯示3行  點擊查看全文時候 >顯示全文   此類的 狀況下 能夠使用    blog

     此段代碼算是動態計算label高度的升級版吧開發

//建立label
    NSString * labelStr = @"你好,這是UILabel的例如:在論壇回覆裏邊有「點擊查看全文功能」 默認的最多隻顯示3行  點擊查看全文時候 >顯示全文   此類的 狀況下 能夠使用  ";
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 160, 200, 14)];
    label.font = [UIFont systemFontOfSize:11];
    label.backgroundColor = [UIColor orangeColor];
    label.text = labelStr;
    label.numberOfLines = 0;
    [self.view addSubview:label];源碼

[self dynamicCalculationLabelHight:label];it

------------  分割線  ------------------io

- (void)dynamicCalculationLabelHight:(UILabel*) label{
    //有源碼在 有需求自行微調便可
    NSInteger n = 6;//最多顯示的行數
    CGSize labelSize = {0, 0};
    
    labelSize = [self  ZFYtextHeightFromTextString:label.text width:label.frame.size.width fontSize:label.font.pointSize];
    
   // NSLog(@"%f",label.font.pointSize);//獲取 label的字體大小
    //NSLog(@"%f",label.font.lineHeight);//獲取label的在不一樣字體下的時候所須要的行高
    //NSLog(@"%f",labelSize.height);//label計算行高

    CGFloat rate = label.font.lineHeight; //每一行須要的高度

    CGRect frame= label.frame;
    if (labelSize.height>rate*n) {
        frame.size.height = rate*n;
    }else{
        frame.size.height = labelSize.height;
    }
    label.frame = frame;
}
ast

 

    //計算 label須要的寬度和高度方法iOS開發

-(CGSize)ZFYtextHeightFromTextString:(NSString *)text width:(CGFloat)textWidth fontSize:(CGFloat)size{
    //計算 label須要的寬度和高度
    NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:size]};
    CGRect rect = [text boundingRectWithSize:CGSizeMake(textWidth, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
    
     CGSize size1 = [text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:size]}];
    
    return CGSizeMake(size1.width, rect.size.height);
}

轉載請註明出處http://my.oschina.net/u/2523541/blog/676724

若是感受寫的不錯麻煩關注一下

對以上代碼有疑問能夠留言告訴我

相關文章
相關標籤/搜索