ios 中内容label高度自适应

首先并且最重要的是计算文本高度,然后再设置label的高度,

计算文本高度:

假设文本:

NSString*strtest =@"
新华网北京12月16日电据新华社“新华国际”客户端报道,“一日之计在于晨”。克强总理15日的紧张日程从一顿早饭开始。天刚蒙蒙亮,哈萨克斯坦总理马西莫夫就来到克强总理下榻的酒店——北京大厦,邀请克强总理一起吃早餐。这是一顿简单的早餐,只有一张圆桌,两把椅子,一些简单的中西餐点。这也是一顿丰盛的早餐,两位总理在餐桌上就中哈产能合作达成的共识内容丰富,覆盖广泛。这更是一顿登高望远的早餐,这项合作不仅将惠及中哈两国人民,更将为区域内各国带来长远的共同利益。站在大厦23层的旋转餐厅,阿斯塔纳城尽收眼底,这里适合登高远眺。";

事实上ios 有两种方法:

ios7.0之前用:

[strtestsizeWithFont:ContentFontconstrainedToSize:CGSizeMake(ScreenWeight
-20, 1000) lineBreakMode:NSLineBreakByWordWrapping];

之后用下面的方法比较好:

CGRect frame = [strtestboundingRectWithSize:CGSizeMake(220,1000)
options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:10]}context:nil];

attributes参数有:

NSFontAttributeName         // UIFont, default Helvetica(Neue) 12

NSParagraphStyleAttributeName       // NSParagraphStyle, default defaultParagraphStyle

NSForegroundColorAttributeName      // UIColor, default blackColor

NSBackgroundColorAttributeName      // UIColor, default nil: no background

NSLigatureAttributeName             // NSNumber containing integer, default 1: default ligatures, 0: no ligatures

NSKernAttributeName       // NSNumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled.

NSStrikethroughStyleAttributeName ; // NSNumber containing integer, default 0: no strikethrough

NSUnderlineStyleAttributeName       // NSNumber containing integer, default 0: no underline

NSStrokeColorAttributeName          // UIColor, default nil: same as foreground color

NSStrokeWidthAttributeName          // NSNumber containing floating point value, in percent of font point size, default 0: no stroke; positive for stroke alone, negative for stroke
and fill (a typical value for outlined text would be 3.0)

NSShadowAttributeName ;             // NSShadow, default nil: no shadow

NSTextEffectAttributeName           // NSString, default nil: no text effect

NSAttachmentAttributeName           // NSTextAttachment, default nil

NSLinkAttributeName                 // NSURL (preferred) or NSString

NSBaselineOffsetAttributeName      // NSNumber containing floating point value, in points; offset from baseline, default 0

NSUnderlineColorAttributeName       // UIColor, default nil: same as foreground color

NSStrikethroughColorAttributeName   // UIColor, default nil: same as foreground color

NSObliquenessAttributeName          // NSNumber containing floating point value; skew to be applied to glyphs, default 0: no skew

NSExpansionAttributeName            // NSNumber containing floating point value; log of expansion factor to be applied to glyphs, default 0: no expansion

建立label的时候注意:

① label的font,必须和计算时用的font一样

② label的numberOfLines要设置为零

③ label的宽度设置成计算时设置的宽度一致

时间: 2024-12-28 08:51:51

ios 中内容label高度自适应的相关文章

iOS7中Cell高度 Label高度自适应

? 1 2 3 4 5 6 7 8 9 10 11 12 ?- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{     NSString *str = [_dataArray objectAtIndex:indexPath.row];     UIFont *tfont = [UIFont systemFontOfSize:14.0];     NSDictio

IOS中获取label中文本的高度及tableviewCell的自适应

1.NSString有个方法,可以获取字符串实际所占高度和宽度.可以用到UITableViewCell的自适应上在IOS7之前,用下边的 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode; 是用来获取文本内容在指定的size内,算出所需要的实际宽度和高度.如 //这是获取字符串在指定的size内(宽度超过175,则换行)

IOS TableView的Cell高度自适应,UILabel自动换行适应

原文链接 :http://blog.csdn.net/swingpyzf/article/details/18093959 需求: 1.表格里的UILable要求自动换行 2.创建的tableViewCell的高度会自动适应内容的高度 一.用xcode构建项目,创建一个有tableView的视图,用纯代码的形式实现: 1.创建一个UIViewController类,定义一个UITableView,实现TableView的委托和数据源协议 [objc] view plaincopyprint? /

IOS UItableview UIcollectionview cell高度自适应

1.tableviewcell 高度自适应 主要方法: 计算cell高度[cell.contentview systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; // NSLayoutConstraint 使用条件 添加相对约束 ios 7.0 cell 高度计算修改: - (CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NS

如何处理 在html中 li 的高度自适应(且li里面的内容有浮动的情况下)

废话不多说,我们写贴出代码 这个是 Html 代码 <div class="main"> <ul> <li> <div class="main-left">23</div> <div class="main-right"> <p>text1</p> <p>text2</p> </div> </li> &l

xib中实现cell高度自适应

iOS8之后的tableview中cell可以设置成自适应高度: 这个新特性,意味着View被Autolayout调整frame后,会自动拉伸和收缩SupView. 具体到Cell,要求cell.contentView的四条边都与内部元素有约束关系. 在TableViewController里 - (void)viewDidLoad { [super viewDidLoad]; //添加这两行代码 self.tableView.estimatedRowHeight = 44.0f; self.t

iOS中的固定 高度

iOS键盘高度   英文 216(不带联想功能) 英文 252(带联想功能)  中文 252 系统自带表情键盘的高度是 253 在使用系统键盘的时候,如果遇到输入框被键盘挡住的情况 就要用通知中心 来调整输入框的位置,让输入框不被挡住 上面导航栏高度 64(20的电池等信息显示区域, 44的导航栏) 下面 tabbar  49 导航栏标准  左右两侧均距离边缘 15 ,宽高分别是50  30   返回的箭头是顶着 返回按钮的 左边缘的 textView的内容默认距离其frame的边缘距离是6

如何解决在scrollview中的viewpager高度自适应的

时间:2016年3月18日16:47:56 /** * 自动适应高度的ViewPager * @author * */ public class CustomViewPager extends ViewPager { public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attr

ios计算内容的高度 (含7.0前及以后的版本的用法)

+ (CGFloat)heightForContent:(MyMsgTextModel *)content withWidth:(CGFloat)width { CGSize contentSize; if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init]; paragrap