日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

设置UILabel可变高度(根据文本内容自动适应高度)

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设置UILabel可变高度(根据文本内容自动适应高度) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
@property(nonatomic)UILabel *showLabel;
?// 計(jì)算文本所占高度,計(jì)算出來(lái)之后設(shè)置label的高度

?// 第一個(gè)參數(shù):字體大小,字體大小/樣式影響計(jì)算字體的高度
?// 第二個(gè)參數(shù):CGSize結(jié)構(gòu)體,結(jié)構(gòu)體中第一個(gè)參數(shù)表示寬度,寬度的設(shè)置影響計(jì)算文本的高度,很明顯越寬,高度越小;結(jié)構(gòu)體中第二個(gè)參數(shù)表示最大能有多高,比如我們寫(xiě)為100,那么即使文本高度計(jì)算出來(lái)是200, 這個(gè)方法也會(huì)返回100, 所以一般情況下我們把它寫(xiě)為MAXFLOAT, 表示能有多高返回多高
??? if ([[[UIDevice currentDevice] systemVersion] floatValue] <= 7.0) {
??????? CGSize size = [str sizeWithFont:self.showLabel.font           constrainedToSize:CGSizeMake(self.showLabel.frame.size.width, MAXFLOAT)];
??????? // 計(jì)算出文本高度后,重新給label賦值
??????? CGRect frame = self.showLabel.frame;
??????? frame.size.height = size.height;
??????? self.showLabel.frame = frame;
??? } else {
??????? /*
???????? // 計(jì)算text的高度,改變label的高,讓label適應(yīng)這些文字
???????? CGSize textSize = [text sizeWithFont:[UIFont systemFontOfSize:18.0] constrainedToSize:CGSizeMake(self.targetLabel.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
???????? // 第一個(gè)參數(shù):字體
???????? // 第二個(gè)參數(shù):constraintedSize
???????? // 第三個(gè)參數(shù):換行模式
???????? */
??????? // 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;
??????? // 選項(xiàng)options:
??????? /**
???????? * NSStringDrawingUsesLineFragmentOrigin:
???????? 繪制文本時(shí)使用 line fragement origin 而不是 baseline origin
???????? NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine
???????? * NSStringDrawingUsesFontLeading:
???????? 計(jì)算行高時(shí)使用行距。(譯者注:字體大小+行間距=行距)
???????? * NSStringDrawingTruncatesLastVisibleLine:
???????? 如果文本內(nèi)容超出指定的矩形限制,文本將被截去并在最后一個(gè)字符后加上省略號(hào)。
???????? * NSStringDrawingUsesDeviceMetrics:
???????? 計(jì)算布局時(shí)使用圖元字形(而不是印刷字體)。
???????? */
??????? CGRect frame = self.showLabel.frame;
??????? frame.size.height = textSize.height;
??????? self.showLabel.frame = frame;
??? }
??? self.showLabel.text = @"xxxxxxx";//你的文本內(nèi)容
【拓】同理可以設(shè)計(jì)一個(gè)可變高度(根據(jù)內(nèi)容自適應(yīng)高度)的 UITableViewCell

?

1) 創(chuàng)建并添加一個(gè) UILabel 作為單元格 cell 的子視圖;
2) 在 UITableView 的委托方法: (CGFloat)tableView:(UITableView*)tableViewheightForRowAtIndexPath: (NSIndexPath *) indexPath 中計(jì)算高度
3) 在 UITableView 的委托方法: (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexP ath: (NSIndexPath *) indexPath 中計(jì)算 UILabel 的框大小。

?



轉(zhuǎn)載于:https://www.cnblogs.com/vfeng/p/4945704.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的设置UILabel可变高度(根据文本内容自动适应高度)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。