@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 的框大小。

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

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

    原文 Jquery实现 TextArea 文本框根据输入内容自动适应高度 在玩微博的时候我们可能会注意到一个细节就是不管是新浪微博还是腾讯微博在转发和评论的时候给你的默认文本框的高度都不会很高,这可能 ...

  2. css为超过一定宽度的文本内容自动加上省略号

    当在html中某个地方添加文本内容的时候如果内容过长我们会希望他超过一定宽度之后,其余的可以被截断,后面补充为省略号: 实现方式: 1.设置css样式为文本不换行: 2.位包裹文本的标签指定宽度: 3 ...

  3. UGUI小技巧之Text随文本内容自动变化大小

    看了网上很多帖子,都是说在 Text 上面加上 Content Size Fitter 组件,并将对应的轴向改成 Preferred size 就可以实现 Text 大小随着文本内容自适应,如下图: ...

  4. Creating Dialogbased Windows Application (4) / 创建基于对话框的Windows应用程序(四)Edit Control、Combo Box的应用、Unicode转ANSI、Open File Dialog、文件读取、可变参数、文本框自动滚动 / VC++, Windows

    创建基于对话框的Windows应用程序(四)—— Edit Control.Combo Box的应用.Unicode转ANSI.Open File Dialog.文件读取.可变参数.自动滚动 之前的介 ...

  5. textarea高度随文本内容变化,且不出现滚动条

    通常文本域的写法如下 <textarea type="text" class="form-control pull-left" id="desc ...

  6. 设置HTML的TextArea标记跟随文本内容自动设置高度

    写内容的时候用的是textarea来写,可以换行,然后预览页面也要显示是换行才行,所以预览页面还是要用textarea来显示, 样式去掉边框,不可以拉伸,不可编辑 // html <textar ...

  7. HTML的TextArea标记跟随文本内容自动设置高度

    js <textarea name="textarea" id="textarea" style='overflow-y: hidden;height:2 ...

  8. textarea跟随内容自动伸缩高度实现方案

    监听input事件,然后将textarea的style.height设置为最低高度(19px),进而获取到元素的scrollHeight,然后将scroolHeight设置为style.height

  9. html设置<input type="text">内的内容自动为大写

    添加css样式:text-transform:uppercase;可以实现自动转换为大写样式. 但是input 的value还是小写的,因为它是CSS样式. <input type=" ...

随机推荐

  1. DevExpress右键菜单使用 zt

    添加BarManager和popupMenu组建: 设置popupMenu组件的Manager属性: 右键点击popupMenu主键,点击Customize选项添加菜单:   然后便可添加到鼠标事件中 ...

  2. 理解c++11正则表达式 (1)

    概要 C++11提出了正则表达式这个概念,只需在头文件中包含#include<regex>即可.我们可以完成: Match 将整个输入拿来比对匹配某个正则表达式 Search 查找与正则表 ...

  3. 【ImageMagick】Unix Windows 源码安装

    [ Unix 源码安装 | Windows 源码安装 ] 首先检查一下电脑里已经安装的ImageMagick版本,输入:   convert -version 除非你想要把对另外的图像格式的支持或升级 ...

  4. Install MongoDB on Windows

    Overview Use this tutorial to install MongoDB on a Windows systems. PLATFORM SUPPORT Starting in ver ...

  5. STM32 IAP 在线更新程序 为什么有时行 有时又不行 感觉不可靠 问题解决

    搞了一天才发现 在MDK设置选项中有个"linker"选项卡 , 需要在Project->Options->Linker中将Use Memory Layout from ...

  6. 安装XCode导致mac无法正常开机怎么办

    作为一个IOS编程菜鸟,之前在网上买的IOS教程都坑爹的是xcode4以前的版本的,由于3和4界面变化较大,所以看着书往往不知所云,所以就迫不及待地从网上下载了XCode 3.2.5+iOS SDK ...

  7. C程序设计语言--宏定义

    C语言中的宏定义 C语言中的宏定义也叫做预处理命令,预处理命令是C语言本身的组成部分,不能直接对它们进行编译. 1.基本概念: 1>预处理不是C语句,是在编译前进行的 2>预处理功能主要用 ...

  8. 基于iOS,Android的服务器证书失效检测

    1.前言 在目前的iOS,Android手机上,当手机应用进行SSL通信时,手机端默认是不会进行服务器证书是否失效的监测. 在iOS上,系统是会定期获取所访问服务器的证书信息然后出存在本地. 在And ...

  9. 用APK Downloader直接从Google Play上下载apk

    APK Downloader可以直接从Google Play上下载apk,相比较其他软件,这个不需要提供Google ID,对于没有刷机的同学还是有些帮助的.

  10. JMeter的基本介绍和入门

    1. 介绍 JMeter是Apache组织的开放源代码项目,能做功能测试和性能测试.它能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC),还能以多种形式展 ...