在开发当中有时候需要通过计算一段文本的尺寸大小而实现label等文本控件的自动伸缩
代码:
#import "UILabel+StringFrame.h"
@implementation UILabel (StringFrame)
- (CGSize)boundingRectWithSize:(CGSize)size
{
NSDictionary *attribute = @{NSFontAttributeName: self.font};
CGSize retSize = [self.text boundingRectWithSize:size
options:\
NSStringDrawingTruncatesLastVisibleLine |
NSStringDrawingUsesLineFragmentOrigin |
NSStringDrawingUsesFontLeading
attributes:attribute
context:nil].size;
return retSize;
}
@end
#import <UIKit/UIKit.h>
/**
动态计算机label的高度
*/
@interface UILabel (StringFrame)
/**
动态计算机label的高度
*/
- (CGSize)boundingRectWithSize:(CGSize)size;
@end
使用这个分类:
UILabel *label = [[UILabel alloc]init];
label.backgroundColor = [UIColor whiteColor];
[self.view addSubview:label];
label.text = str;
// label.font = [UIFont fontWithName:Nil size:18];
label.font = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
// UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
CGSize size = [label boundingRectWithSize:CGSizeMake(Screen_width, 0)];
label.numberOfLines = 0;
label.frame = CGRectMake(0.0f, 150.f, size.width, size.height);
NSLog(@"label的frame = %@", NSStringFromCGRect(label.frame));