ios动态获取nsstring字符串宽度

转载 2015年07月07日 14:39:25

在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法。

1.获取宽度,获取字符串不折行单行显示时所需要的长度 

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];

注:如果想得到宽度的话,size的width应该设为MAXFLOAT。


2.获取高度,获取字符串在指定的size内(宽度超过label的宽度则换行)所需的实际高度.

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

注:如果想得到高度的话,size的height应该设为MAXFLOAT。


3.实际编程时,有时需要计算一段文字最后一个字符的位置,并在其后添加图片或其他控件(如info图标),下面代码为计算label中最后一个字符后面一位的位置的方法。

CGSize sz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, 40)];

CGSize linesSz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

if(sz.width <= linesSz.width) //判断是否折行

{

        lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y);  

}

else  

{  

        lastPoint = CGPointMake(label.frame.origin.x + (int)sz.width % (int)linesSz.width,linesSz.height - sz.height);  


ios7.0 之后该用:

CGFloat width1=[(NSString *)ob1 sizeWithFont:[UIFont systemFontOfSize:16] constrainedToSize:CGSizeMake(1000, FONTHEIGHT)].width;

CGFloat width1=[(NSString *)ob1 boundingRectWithSize:CGSizeMake(1000, FONTHEIGHT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} context:nil].size.width;

boundingRectWithSize: CGSize 对应 constrainedToSize: CGSize
attributes:@{NSFontAttributeName: [ UIFont ] } 对应 sizeWithFont[ UIFont ]
options: NSStringDrawingUsesLineFragmentOrigin 默认照填
context: nil 默认照填

转自:http://www.cnblogs.com/spiritstudio/archive/2011/11/17/2252074.html

相关文章推荐

iOS开发 根据字符内容计算宽高度

根据内容计算宽度 - (CGFloat)calculateRowWidth:(NSString *)string { NSDictionary *dic = @{NSFontAttribut...

iOS 编程 计算字符串文字宽度

// //  ViewController.m //  tableview复习 // //  Created by tianshangrenjian on 15/7/7. ...

iOS根据字体字号大小和字体label计算label宽度

获取label 大小的方法: - (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize {...

IOS 获取文本的高度和宽度

+ (CGFloat)heightForContent:(MyMsgTextModel *)content withWidth:(CGFloat)width { CGSize contentS...
  • zz_mm
  • zz_mm
  • 2015年06月05日 18:15
  • 2517

iOS中实现获取文本内容的宽高

我们在进行iOS开发的过程中,难免会要得到文本内容的宽高。 例如:我们进行即时通讯的聊天功能开发时就会用到iOS中TableView,将一段聊天内容显示在cell中,如图,红色框框就是TableVi...

iOS计算字符串的宽高

获取给定字符串、给定字体大小、预估宽高、获取实际宽度

获取字符串高度或宽度

获取字符串需要显示的控件高度或者是宽度

【代码笔记】iOS-获取字符串的宽度,高度

一,代码。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading ...

objective-c中字符串长度计算

我们知道,在c语言中,使用sizeof ()计算在内存中占用的字节数, 引用string.h后,使用strlen()计算字符串的长度(不包含\0)。       而在object-c中, “leng...

IOS开发中UILabel单行、多行文本计算高度、宽度的技巧

IOS学习了一段时间了,对于这个文本内容多了需要计算高度的问题特别蛋疼,这个根本没法和Android相比啊,Android根本就不用自己费心计算宽度和高度,内部都帮你实现好了,好了,YY到此结束,遇到...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios动态获取nsstring字符串宽度
举报原因:
原因补充:

(最多只允许输入30个字)