牛骨文教育服务平台(让学习变的简单)
博文笔记

OC中获取一串字符串的高度(宽度确定)或宽度(高度确定)

创建时间:2016-10-26 投稿人: 浏览次数:1279

项目中我们有时会需要根据字符串来确定UILabel的宽度或高度,如我们经常遇到的单元格自适应问题。如果是要动态知道UILabel的高度,那么我们直接利用单元格自适应高度就可以。如果我们要获取UILabel的宽度(为什么要获取UILabel的宽度?因为有时如果字符串过长那么UILabel的宽度就会相应发生变化),那么就可以利用下面的方法:

CGSize size = [string sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 17)];  CGFloat w =size.width;

其实这个方法只是先获取字符串(字符串的字体大小是确定了的)的size再确定其宽度。从方法中可以看出我们固定了字符串的高度为17,如果想要获取字符串的高度,那么固定宽度就好了。

但这个方法已经不被苹果官方建议使用了,而是被另一个方法所取代:

CGSize size = CGSizeMake(320,2000); //设置一个行高上限
NSDictionary *attribute = @{NSFontAttributeName: nameLabel.font};
CGSize labelsize = [nameLabel.text boundingRectWithSize:size options: NSStringDrawingTruncatesLastVisibleLine NSStringDrawingUsesLineFragmentOrigin NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;

大家再看看单元格高度自适应是不是有什么想法啊?
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。