iOS依据字符串计算UITextView高度

iOS计算字符串高度,有须要的朋友能够參考下。

方法一:ios7.0之前适用

/**
 @method 获取指定宽度width,字体大小fontSize,字符串value的高度
 @param value 待计算的字符串
 @param fontSize 字体的大小
 @param Width 限制字符串显示区域的宽度
 @result float 返回的高度
 */
- (float) heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width
{
    CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize]
                         constrainedToSize:CGSizeMake(width -16.0, CGFLOAT_MAX)
                             lineBreakMode:NSLineBreakByWordWrapping];
        //此处的换行类型(lineBreakMode)可依据自己的实际情况进行设置
    return sizeToFit.height + 16.0;
}

方法二:ios7.0及之后适用

/**
 @method 获取指定宽度width,字体大小fontSize,字符串value的高度
 @param value 待计算的字符串
 @param fontSize 字体的大小
 @param Width 限制字符串显示区域的宽度
 @result float 返回的高度
 */
- (float) heightForString:(NSString *)value andWidth:(float)width{
    //获取当前文本的属性
    NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:value];
    _text.attributedText = attrStr;
    NSRange range = NSMakeRange(0, attrStr.length);
    // 获取该段attributedString的属性字典
    NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range];
    // 计算文本的大小
    CGSize sizeToFit = [value boundingRectWithSize:CGSizeMake(width - 16.0, MAXFLOAT) // 用于计算文本绘制时占领的矩形块
                                               options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
                                            attributes:dic        // 文字的属性
                                               context:nil].size; // context上下文。包括一些信息,比如怎样调整字间距以及缩放。

该对象包括的信息将用于文本绘制。

该參数可为nil
    return sizeToFit.height + 16.0;
}

//注意:再前两种方法中,UITextView在上下左右分别有一个8px的padding,须要将UITextView.contentSize.width减去16像素(左右的padding 2 x 8px)。同一时候返回的高度中再加上16像素(上下的padding)。这样得到的才是UITextView真正适应内容的高度。如代码中
CGSizeMake(width -16.0, CGFLOAT_MAX),return sizeToFit.height + 16.0。

UILable中则不用

方法三:通用(推荐)

/**
 @method 获取指定宽度width的字符串在UITextView上的高度
 @param textView 待计算的UITextView
 @param Width 限制字符串显示区域的宽度
 @result float 返回的高度
 */
- (float) heightForString:(UITextView *)textView andWidth:(float)width{
     CGSize sizeToFit = [textView sizeThatFits:CGSizeMake(width, MAXFLOAT)];
    return sizeToFit.height;
}
时间: 2024-10-26 18:18:54

iOS依据字符串计算UITextView高度的相关文章

iOS根据字符串计算UITextView高度

iOS计算字符串高度,有需要的朋友可以参考下. 方法一:ios7.0之前适用 /** @method 获取指定宽度width,字体大小fontSize,字符串value的高度 @param value 待计算的字符串 @param fontSize 字体的大小 @param Width 限制字符串显示区域的宽度 @result float 返回的高度 */ - (float) heightForString:(NSString *)value fontSize:(float)fontSize a

iOS常用技术-计算Label高度

////  ViewController.m//  计算Label高度////  Created by 大欢 on 16/1/19.//  Copyright © 2016年 bjsxt. All rights reserved.// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {    [super vie

iOS学习-11. 圆角(小于等于四个)类似气泡和计算字符高度

使用贝塞尔曲线, // 小于四个角 圆角 -(void)setbor{ NSString *str = @" couldn't fit this all in a comment to @lomanf's answer. So I'm adding it as an answer."; //计算字符高度 [Corner layoutHeightWithLable:self.label text:str]; /* 1.使用空白 view addSubView label 2.得到类似 q

ios 根据文字数量计算UILabel高度

以前封装过多个关于实现此功能的方法,虽然都实现了效果,但代码和实现思路都相对复杂很多,而且并不比我下面要说的这个方法好,这个也是我今天突发奇想来的,测量一下字体的宽度,然后根据这个点来计算 UILabel高度.这里我使用的FontSize是13,我测出它的高度.宽度都是15像素,如果你使用其他号字体,需要自己从新测下字体宽度.高度,下面贴出代码. 一.实现代码 //申明时的label的高度可以随便设置,因为之后计算出高度后还需要从设置一次 UILabel *label = [[UILabel a

IOS之xib计算cell的高度

1.之前是纯代码计算cell的高度,现在就是在cell里面成创建好了控件的位置,然后需要计算cell的内容的高度,图片的类型是一样的计算方法.先看看cell的布局情况:如图所示: 计算的高度的方式:头像的高度+内容的高度 +(有如图片就加上图片的高度,没有就不加了)= cell高度 这里就是要计算content的高度了,其他的都写死了直接加上就行了,关键就是计算cell如图计算: Demo下载:http://pan.baidu.com/s/1hspqwp2

转:动态计算UITableViewCell高度详解

转自:http://www.cocoachina.com/industry/20140604/8668.html 不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示内容常见的控件,本人觉得它是UIKit中最复杂的一个控件.今天要向大家介绍的就是如何动态计算UITableViewCell高度的一经验与技巧,在此做一些总结方便朋友们查阅.为了不让讲解空洞抽象,我还是用代码实例的方式进行讲解,这样更容易接收与学习. 本文将介绍四种情况下UITableViewCell的计

动态计算UITableViewCell高度详解 (转)

感觉挺有用的一篇文章,分析了4种解决方案.回头测试之.如果有别的方案,我会在后面补上. 原文地址:http://www.ifun.cc/blog/2014/02/21/dong-tai-ji-suan-uitableviewcellgao-du-xiang-jie/ 不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示内容常见的控件,本人觉得它是UIKit中最复杂的一个控件.今天要向大家介绍的就是如何动态计算UITableViewCell高度的一经验与技巧,在此做一

使用boundingRectWithSize计算内容高度的坑

iOS中,根据给定的内容.字体,宽度,计算文本高度的函数,iOS7之前使用sizeWithFont,iOS7之后使用boundingRectWithSize.</span> - boundingRectWithSize:options:attributes:context: Calculates and returns the bounding rect for the receiver drawn using the given options and display characteris

【转】动态计算UITableViewCell高度详解

转自:http://www.ifun.cc/blog/2014/02/21/dong-tai-ji-suan-uitableviewcellgao-du-xiang-jie/ 站QQ技术群:<疯狂IT人>93916004 不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示内容常见的控件,本人觉得它是UIKit中最复杂的一个控件.今天要向大家介绍的就是如何动态计算UITableViewCell高度的一经验与技巧,在此做一些总结方便朋友们查阅. 同时也欢迎广大iOS