如題步驟如下,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的高度就完成了;
荊軻刺秦王!