UILabel 根据text的内容来调整大小

有时候,在UILabel的text过长的时候,我们需要让label进行自适应大小,之前我们必须要获得这个UILabel的size,这便是根据text的内容和性质(字体,行间距等决定的)。

在ios7中,使用boundingRectWithRect方法来获得CGSize:

//文字的字体
NSDictionary *attribute = @{NSFontAttributeName:[UIFont fontWithName:@"Heiti SC" size:15.0f]};

//将text转化为NSMutableAttributedString类型
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:_titleLabel.text attributes:attribute];

//设置行间距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:6.0f];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [_titleLabel.text length])];

//获得UILabel的size,其中,296和93是size的限定值
CGSize DateSize = [attributedString boundingRectWithSize:CGSizeMake(296, 93) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading  context:nil].size;

//如果UILabel的宽度太宽的话
if (DateSize.width > 518.0f/2)
{
    _titleLabel.size = CGSizeMake(296.0f, DateSize.height);
    _titleLabel.textAlignment = NSTextAlignmentLeft;
    _titleLabel.lineBreakMode = NSLineBreakByCharWrapping;
    _titleLabel.numberOfLines = 0;  //不限定行数,自动换行
    _titleLabel.attributedText = attributedString;
}

UILabel 根据text的内容来调整大小,布布扣,bubuko.com

时间: 2024-11-10 05:57:55

UILabel 根据text的内容来调整大小的相关文章

在MathType如何让括号随内容自动调整大小的技巧

MathType软件是一款数学公式编辑器工具可以轻松输入各种复杂的公式和符号,与Office文档完美结合,显示效果超好,比Office自带的公式编辑器要强大很多.但是很多的新手朋友不知道在MathType如何让括号随内容自动调整大小的技巧.下面就来给大家介绍介绍. 问题分析: 在输入方程组及超长公式时,有时会发现括号不能随着括号中的内容自动调整大小,这种现象的主要原因是输入的括号类型是字符类型的括号,或者是文字类型的括号,这两类括号类型是不能调整的. 解决方案: 能够自动调整大小的括号是一种结构

iOS8 UILabel BUG ? text不显示

以前的一个项目,今天发现有个地方在iOS8上面不显示文本,用的是UILabel 于是调试了一下代码,大致发现了原因: 当在一个UILabel上添加同样是UILabel的subView的时候,如果给父Label设置背景颜色(setBackgroundColor:)但没有设置Text(setText:),那么子Label设置的text就显示不了,真是一个奇怪的问题. 下面有3种解决办法: 1.将父Label改成UIView 2.不设置父Lable的背景颜色 3.设置父Label的Text( [sup

iOS UILabel的text支持换行符的方法

NSString *str = @"你要放在label里的文本字符串  \n  换行符"; // 当然需要先获得label 的UILabel的实例 label.numberOfLines = 0; // 最关键的一句!!!!!! label.text = str;

UIlabel 属性text

UILabel *pLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,200,100)]; pLabel.text = @"测试到吗"; NSInteger leght = [pLabel.text length]; NSMutableAttributedString *richText = [[NSMutableAttributedString alloc] initWithString:pLabel.text]; //设

双击Table表格td变成text修改内容

//先不多说这里上我的页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <title>双击td变成text文本框</title> 7 <link rel="

Android Studio 如何获取 text文本内容

1.找到目录的main先建立assets格式的文件夹 2.再把需要读取的txt 文件放入到该文件夹下(名字随意),这里取 list.txt. 文件内容 格式如下 3.读取文本内容 工具代码 /** * 返回学生名单 以String 数组形式 * * @return */ public String[] initAssets() { try { //获取输入流 InputStream inputStream = getAssets().open("list.txt"); //这里的名字是

响应消息的内容类型text/html与绑定的text/xml内容类型不匹配

解决方法 其中有一个服务报以下错误 处理方法是将 Global.asax中的 SRC="Global.asax.cs" 改写成Codebehind="Global.asax.cs"

聊天界面之气泡文本cell(二)使用Autolayout

聊天界面主要是cell的动态高度计算和效率的问题,参考网上的两篇文章: 1.优化UITableViewCell高度计算的那些事  http://www.cocoachina.com/ios/20150518/11854.html 2.动态计算UITableViewCell高度详解  http://www.cocoachina.com/industry/20140604/8668.html 因为对Autolayout也有一定的了解,决定一试,把动态调整高度交给ios自己处理.最后发现这个方案还是很

编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt

package zuoye; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream; public class IoDemo { public static void main(String[] args) { File file = new File("d:/zuoye"); if(!file.exists()) { file.mkdirs(); } File f=new