iOS7之后的UILabel自适应高度

UILabel  ios7 与ios7之前实现自适应撑高的方法,文本的内容长度不一,我们需要根据内容的多少来自动换行处理。在IOS7下要求font,与breakmode与之前设置的完全一致sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByCharWrapping

我自己最近写UILabel的自适应高度,发现以前的方法和枚举iOS7之后都被抛弃了,所以自己又总结了一下新的方法:

//支持iOS7
    UILabel * testlable = [[UILabel alloc]initWithFrame:CGRectMake(10,20,200,20)];//这里frame 不影响
    
    NSString * tstring [email protected]"UILabel  ios7 与ios7之前实现自适应撑高的方法,文本的内容长度不一,我们需要根据内容的多少来自动换行处理。在IOS7下要求font,与breakmode与之前设置的完全一致sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByCharWrapping";
    //设置字体
    UIFont * tfont = [UIFont systemFontOfSize:14];
    testlable.font = tfont;
    //自动换行
    testlable.numberOfLines = 0;
    testlable.lineBreakMode = NSLineBreakByWordWrapping;
    testlable.lineBreakMode =NSLineBreakByTruncatingTail ;
    
    testlable.text = tstring ;
    [testlable setBackgroundColor:[UIColor redColor]];
    //设置行间距
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:tstring];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, tstring.length)];
    testlable.attributedText = attributedString;
    [paragraphStyle setLineSpacing:10];
    
    [self.view addSubview:testlable];
    
    //高度估计文本大概要显示几行,宽度根据需求自己定义。 MAXFLOAT 可以算出具体要多高
    
    CGSize size =CGSizeMake(300,MAXFLOAT);
    
    // label可设置的最大高度和宽度
    //    CGSize size = CGSizeMake(300.f, MAXFLOAT);
    
    //    获取当前文本的属性
    
    NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:tfont,NSFontAttributeName,nil];
    
    //ios7方法,获取文本需要的size,限制宽度
    
    CGSize  actualsize =[tstring boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin  attributes:tdic context:nil].size;
    
    // ios7之前使用方法获取文本需要的size,7.0已弃用下面的方法。此方法要求font,与breakmode与之前设置的完全一致
    //    CGSize actualsize = [tstring sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByCharWrapping];
    //   更新UILabel的frame
    
    testlable.frame =CGRectMake(10,20, 300, actualsize.height);

时间: 2024-12-24 07:50:44

iOS7之后的UILabel自适应高度的相关文章

【转】UITableViewCell自适应高度 UILabel自适应高度和自动换行

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {    // 列寬    CGFloat contentWidth = self.tableView.frame.size.width;    // 用何種字體進行顯示    UIFont *font = [UIFont systemFontOfSize:13];       // 該行要顯示的內容    

UILabel自适应高度

网上找了很多资料,都是iOS7.0之前的方法,现在苹果都已经弃用,不能使用了,小弟找了一个iOS7.0之后的方法,写下来给大家分享下 1 //创建UILabel 2 UILabel *label=[[UILabel alloc]init]; 3 4 //设置label可以换行 5 label.numberOfLines=0;//必须设置 //写好测试字符串 6 NSString * [email protected]"这些字都是用来测试UIlabel是否可以自适应高度的,所以无论我写了些什么你都

UILabel 自适应高度,宽度

mLabel1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 20, 10, 1)]; mLabel1.text = @"my label 1, ok , ok , ok "; mLabel1.numberOfLines = 0; [mLabel1 sizeToFit]; 说明: 1. 如果只调用 sizeToFit,则label的位置不变,宽度会根据内容自适应,文本会只占1行 2. 如果设定numberOfLines = 0的同时调用si

UIlabel自适应高度和自动换行

下面的语句都是我亲自试验过的,保证可以运行出来. UILabel *label = [[UILabel alloc] init]; NSString *text = @"这是一个测试!!"; label.text = text; label.numberOfLines = 0; UIFont *font = [UIFont systemFontOfSize:14]; label.backgroundColor = [UIColor greenColor]; //设置字体 label.f

iOS开发-使用storyboard实现UILabel的自适应高度(iOS8)

好久没有写博客了,以后多写些博客,对自己是一种提升,对大家也是一种帮助 最近特别痴迷storyboard和xib的可视化编程,在写项目的时候遇到个问题就是如何使UILabel自适应高度,查了好多文章博客,没有太好的办法,我就自己手动搞了搞,实现了自己想要的效果,下面分享出来 相信大家都遇到这种情况,label没有根据text的字数来自适应高度 那么如何使UILabel自适应高度呢? 在可视化编程下我们需要这么做 1.不可以将label的高度设成固定值,因为设成固定值,label的大小就确定了,在

IOS7.0 UILabel实现自适应高度的新方法

//IOS7.0中利用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context 方法可以获取label的Size大小,来自适应高度,取代了之前的- (CGSize)sizeWithFont:(UIFont *)font const

IOS UILabel 根据内容自适应高度

iOS Label 自适应高度  适配iOS7以后的版本 更多 self.contentLabelView = [[UILabel alloc] init]; self.contentLabelView.font = SYS_FONT(15); self.contentLabelView.lineBreakMode =NSLineBreakByTruncatingTail ; self.contentLabelView.textColor =  [UIColor colorWithHexStri

自适应高度 UILabel自动折行

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 50)]; label.text = @"今天下午全市多云到阴有阵雨或雷雨,今天夜里到明天阴有阵雨,雨量可达大雨. 东北风5-6级阵风7级,逐渐增强到6-7级阵风8级. 今天最高气温:26左右, 明晨最低气温:22左右. 今晨最低气温:21. 今日紫外线等级:2级,照射强度弱,适当防护. 明日洗车指数:4级,天气有雨,不宜洗车."; //清空

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

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