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

@property(nonatomic)UILabel *showLabel;

// 计算文本所占高度,计算出来之后设置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 的框大小。

时间: 2024-08-03 20:13:22

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

Jquery实现 TextArea 文本框根据输入内容自动适应高度

原文 Jquery实现 TextArea 文本框根据输入内容自动适应高度 在玩微博的时候我们可能会注意到一个细节就是不管是新浪微博还是腾讯微博在转发和评论的时候给你的默认文本框的高度都不会很高,这可能是版面的限制和用户通常只转播或者评论一个短句有关.但是当你输入超过一行文字的时候,TextArea自动适应高度,大大改善了体验,这样用户就可以看到全部的文字.不用再去拖动文本框的滚动条. 如下图: 这些在平时的项目中挺实用的,所以抽空封装了一个文本框根据输入内容自适应高度的插件 - TextArea

文本内容自动回滚 【js读书笔记】

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>文本内容自动回滚</title> 6 </head> 7 8 <body> 9 <h2>文本框中的文字自动回滚效果</h2> 10 <div id="rollContent" data-rwidth=&q

jQuery的DOM操作之设置和获取HTML、文本和值 html()text()val()

1. html()方法: 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的html内容. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script src="jQ

CSS中超出的文本内容显示省略号

首先,分析超出内容有两种情况,单行内容超出和多行内容超出,以下逐一说明: 单行内容操作: 单行操作必须有width属性,就是元素要有宽和高的限制才可以,具备以上基本条件之后,编写以下代码 overflow:hidden; text-overflow:ellipsis; white-space:nowrap; 此时,即可看到单行文本超出显示省略号的效果. 多行内容操作: 多行文本超出省略早期是没有该写法的,本文使用的是css3对WebKit的拓展写法,需要注意,该方法只适用于WebKit浏览器和移

iOS-UILable多行显示文本内容、根据文本长短自动计算文本框高度

iAronTalk Blog opens. The clean and elegantlife style deduces the deep thought of life. -=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= UILabel作为UIView家族中的一员,其应用广泛,使用方法清晰明了深受发烧友们喜欢,是为首选. 针

iOS 设置UILabel的行间距并自适应高度

NSString *contentStr = @"总以为,在最初的地方,有一个最原来的我,就也会有一个最原来的你"; UILabel *tempLabel = [[UILabel alloc] init]; //设置背景颜色 tempLabel.backgroundColor = [UIColor redColor]; //设置内容 tempLabel.text = contentStr; //设置字体颜色 tempLabel.textColor = [UIColor whiteCol

UILabel的自动适应高度

UILabel如果想自动适应,通常我们的做法是计算出文本的高度,然后设置UILabel的高. UILabel *label = [[UILabel alloc] init]; label.font = [UIFont systemFontOfSize:15]; label.text = @"你好吗,中国.我爱你中国.权利的游戏全看完咯,拍得还可以哦!"; CGRect rect = [label.text boundingRectWithSize:CGSizeMake(200, MAX

iOS 动态计算文本内容的高度

关于ios 下动态计算文本内容的高度,经过查阅和网上搜素,现在看到的有以下几种方法: 1. //  获取字符串的大小  ios6 - (CGSize)getStringRect_:(NSString*)aString { CGSize size; UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13]; size=[aString sizeWithFont:nameFont constrainedToSize:CGSize

iOS 根据文本内容为TextView动态定义高度

解决方案: 1.定义一个textview,在storyboard中设定该textview的constraints. 2.将高度的constraint定义到头文件中:(直接拖拽) @property (weak, nonatomic) IBOutlet NSLayoutConstraint *textviewHeightConstraint; 3.待在实现文件中为textview加载了内容之后,获取文本高度,为该constraint赋值: CGSize sizeThatShouldFitTheCo