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;
}
iOS依据字符串计算UITextView高度的更多相关文章
- iOS开发 准确计算Coretext高度
- (int)getAttributedStringHeightWithString:(NSAttributedString *) string WidthValue:(int) width{ ...
- iOS中动态计算不同颜色、字体的文字高度
在改项目bug的时候,有一个问题动态计算label的高度,前开发者竟然用字符串长度除以14.16这样的常量来计算是否换行,结果cell的高度问题非常严重. 因为label内容里有部分关键字是要另一种颜 ...
- ios swift UITextView高度自适应
在ios开发中,用到多行输入时一般都会用到UITextView.常见的比如说聊天输入框,评论输入框等,当用户输入多内容时,我们希望高度能根据用户输入的内容扩大而扩大.其实实现这个功能也不是很难,只需要 ...
- ios 根据文字数量计算UILabel高度(已修改)
由于留言的朋友给出了更好的方法,所以下面的代码都是它留言中给出的,优于我前面计算Lable高度方法,这个可以说非常的准,是IOS自带的计算UILABEL高度的方式. 一.实现代码 // 创建label ...
- iOS 学习 - 11.圆角(小于等于四个)类似气泡和计算字符高度
使用贝塞尔曲线, // 小于四个角 圆角 -(void)setbor{ NSString *str = @" couldn't fit this all in a comment to @l ...
- 转:动态计算UITableViewCell高度详解
转自:http://www.cocoachina.com/industry/20140604/8668.html 不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示 ...
- 动态计算UITableViewCell高度详解 (转)
感觉挺有用的一篇文章,分析了4种解决方案.回头测试之.如果有别的方案,我会在后面补上. 原文地址:http://www.ifun.cc/blog/2014/02/21/dong-tai-ji-suan ...
- 动态计算UITableViewCell高度详解
本文将介绍四种情况下UITableViewCell的计算方式,分别是: Auto Layout with UILabel in UITableViewCell Auto Layout with UIT ...
- 动态计算UITableViewCell高度
动态计算UITableViewCell高度 UILabel in UITableViewCell Auto Layout - UILabel的属性Lines设为了0表示显示多行.Auto Layout ...
随机推荐
- 引用 字库编码Unicode相关知识
引用 weifeng.shen 的 字库编码Unicode相关知识 1. 各地编码 首先说明一下现在常用的一些编码方案: 1. 在中国,大陆最常用的就是GBK18030编码, ...
- Poj 2499 Binary Tree(贪心)
题目链接:http://poj.org/problem?id=2499 思路分析:结点向左边移动时结点(a, b)变为( a+b, b),向右边移动时( a, b )变为( a, a + b); 为求 ...
- IBM 中国研究院面试经历
继上次面试MSRA失败后,严重刺激了我幼小的心灵.从此苦学算法准备面试很多其它其它的公司刷一刷Offer以解心 头之恨. 这个带来的IBM 中国研究院的面试经历. IBM的面试相比于MSRA.简直就是 ...
- android应用如何启动另外一个apk应用
在开发的过程中,经常会遇到在一个应用中启动另外一个apk应用的情况 问题的核心点在于我们要拿到第三方apk的package名称跟class名称, 如:package名称是com.funcity.tax ...
- Java开源内容管理CMS系统J4CMS的几个样式
www.j4cms.com java 开源内容管理 页面直接编辑 bootstrap3 样式 default 样式 metro 样式 oschina 样式 leblog 样式 foundation 样 ...
- windows下取linux系统里面的文件
方法一:使用原生态的psftp 1.下载psftp.exe http://pan.baidu.com/s/1boVLHKF 2.双击psftp.exe 2.1 输入指令:open IP地址 (例如:o ...
- java字符串输出
package mytest; public class Mycode { public static void main(String[] args){ String[]seasons = {&qu ...
- uboot: 理解uboot要看哪些书
概览:
- Java--再次理解多态
Java中多态性(polymorphism)的实现 什么是多态 1. 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. ...
- 那些年搞不懂的"协变"和"逆变"
博主之前也不是很清楚协变与逆变,今天在书上看到了有关于协变还是逆变的介绍感觉还是不太懂,后来看了一篇园子里面一位朋友的文章,顿时茅塞顿开.本文里面会有自己的一些见解也会引用博友的一些正文,希望通过本篇 ...