设置UILabel可变高度(根据文本内容自动适应高度)
?// 計算文本所占高度,計算出來之后設置label的高度
?// 第一個參數:字體大小,字體大小/樣式影響計算字體的高度
?// 第二個參數:CGSize結構體,結構體中第一個參數表示寬度,寬度的設置影響計算文本的高度,很明顯越寬,高度越小;結構體中第二個參數表示最大能有多高,比如我們寫為100,那么即使文本高度計算出來是200, 這個方法也會返回100, 所以一般情況下我們把它寫為MAXFLOAT, 表示能有多高返回多高
??? if ([[[UIDevice currentDevice] systemVersion] floatValue] <= 7.0) {
??????? CGSize size = [str sizeWithFont:self.showLabel.font constrainedToSize:CGSizeMake(self.showLabel.frame.size.width, MAXFLOAT)];
??????? // 計算出文本高度后,重新給label賦值
??????? CGRect frame = self.showLabel.frame;
??????? frame.size.height = size.height;
??????? self.showLabel.frame = frame;
??? } else {
??????? /*
???????? // 計算text的高度,改變label的高,讓label適應這些文字
???????? CGSize textSize = [text sizeWithFont:[UIFont systemFontOfSize:18.0] constrainedToSize:CGSizeMake(self.targetLabel.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
???????? // 第一個參數:字體
???????? // 第二個參數:constraintedSize
???????? // 第三個參數:換行模式
???????? */
??????? // after iOS7: boundingRectWithSize:options:attributes:context:
??????? CGSize textSize = [str boundingRectWithSize:CGSizeMake(self.showLabel.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:17.0]} context:nil].size;
??????? // 選項options:
??????? /**
???????? * NSStringDrawingUsesLineFragmentOrigin:
???????? 繪制文本時使用 line fragement origin 而不是 baseline origin
???????? NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine
???????? * NSStringDrawingUsesFontLeading:
???????? 計算行高時使用行距。(譯者注:字體大小+行間距=行距)
???????? * NSStringDrawingTruncatesLastVisibleLine:
???????? 如果文本內容超出指定的矩形限制,文本將被截去并在最后一個字符后加上省略號。
???????? * NSStringDrawingUsesDeviceMetrics:
???????? 計算布局時使用圖元字形(而不是印刷字體)。
???????? */
??????? CGRect frame = self.showLabel.frame;
??????? frame.size.height = textSize.height;
??????? self.showLabel.frame = frame;
??? }
??? self.showLabel.text = @"xxxxxxx";//你的文本內容
【拓】同理可以設計一個可變高度(根據內容自適應高度)的 UITableViewCell
?
1) 創建并添加一個 UILabel 作為單元格 cell 的子視圖;
2) 在 UITableView 的委托方法: (CGFloat)tableView:(UITableView*)tableViewheightForRowAtIndexPath: (NSIndexPath *) indexPath 中計算高度
3) 在 UITableView 的委托方法: (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexP ath: (NSIndexPath *) indexPath 中計算 UILabel 的框大小。
?
轉載于:https://www.cnblogs.com/vfeng/p/4945704.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的设置UILabel可变高度(根据文本内容自动适应高度)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MOSSE相关滤波跟踪算法(二)
- 下一篇: 动态规划——变形的杨辉三角形