根据字符长度动态确定UIlabel宽高

iOS7中用以下方法

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs;


替代过时的iOS6中的- (CGSize)sizeWithFont:(UIFont *)font 方法


 1 // iOS7_API_根据文字 字数动态确定Label宽高
 2 
 3     
 4     // 设置Label的字体 HelveticaNeue  Courier
 5     UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
 6     _nameLabel.font = fnt;
 7     // 根据字体得到NSString的尺寸
 8     CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil]];
 9     // 名字的H
10     CGFloat nameH = size.height;
11     // 名字的W
12     CGFloat nameW = size.width;
13     _nameLabel.frame = CGRectMake(0, 0, nameW,nameH);

 


iOS7中用以下方法boundingRectWithSize:options:attributes:context:替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法


 1 // 4,根据正文内容多少,动态确定正文content的frame
 2     
 3     // 宽度W
 4     CGFloat contentW = self.bounds.size.width - _content.frame.origin.x - kMargin;
 5     // label的字体 HelveticaNeue  Courier
 6     UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];
 7     _content.font = fnt;
 8     _content.numberOfLines = 0;
 9     _content.lineBreakMode = NSLineBreakByWordWrapping;
10     // iOS7中用以下方法替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
11     CGRect tmpRect = [_content.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil] context:nil];
12     
13     // 高度H
14     CGFloat contentH = tmpRect.size.height;
15     NSLog(@"调整后的显示宽度:%f,显示高度:%f"contentW,contentH);
16     _content.frame = CGRectMake(0, 0, contentW,contentH);

 

posted @ 2015-12-07 09:48  fengsh_h  阅读(294)  评论(0编辑  收藏  举报