iOS Label自動計算寬高

如題步驟如下,Label賦值完畢,調(diào)用下列代碼自動計算Label的寬度:

//這里是默認(rèn)一行的情況
label.size = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font,NSFontAttributeName, nil]];
//下面修改關(guān)聯(lián)UI控件的frame就好了

特別提示!如果要用到上述的label.size屬性,那么必須創(chuàng)建UIView的分類,重寫size屬性,代碼如下:

.h分類中
@property (nonatomic, assign) CGSize size;
.m分類中
- (void)setSize:(CGSize)size
{
    CGRect frame = self.frame;
    frame.size = size;
    self.frame = frame;
}

自動計算Label的高度,有幾個注意點:
1.Label的寬度需要固定
2.Label的numberOfLines設(shè)置為0,允許換行
3.當(dāng)計算出Label的動態(tài)高度之后,記住要重設(shè)Label的Size
4.在適當(dāng)?shù)奈恢盟⑿虏季?br> 下面是實現(xiàn)代碼:

//動態(tài)獲取Label高度 - wsx注釋
{
    //寬度
    CGFloat contentW = Label.size.width;
    // iOS7以上用以下方法替代過時的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
    CGRect tmpRect = [Label.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:Label.font,NSFontAttributeName, nil] context:nil];
    // 高度H
    CGFloat contentH = tmpRect.size.height;
    Label.size = CGSizeMake(contentW, contentH);
}

這樣,動態(tài)調(diào)整Label的高度就完成了;
荊軻刺秦王!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,796評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 寫在前面 iOS的的布局機制「auto layout」不是一個新概念,它早在iOS 6中就推出來了,當(dāng)下距離iOS...
    西門淋雨閱讀 1,579評論 2 4
  • 本人職業(yè)美食攝影師,生長工作于北京,在我以美食攝影做糊口職業(yè)為前提下,我認(rèn)為首先要按使用功能和拍攝風(fēng)格區(qū)分一下美食...
    Airphoto閱讀 599評論 2 5
  • 在我17、18歲的時候我覺得世界上我最牛逼,沒人比我厲害,過了兩年后,當(dāng)我進(jìn)入大學(xué),我意識到我只是渺小的我,比我厲...
    沒心沒肝沒心眼閱讀 284評論 0 0