#import "ViewController.h"
#define kSCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
@interface ViewController ()
{
UILabel *_label;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
[selfinitializeLabel];
}
- (void)initializeLabel
{
_label = [[UILabelalloc] init];
_label.numberOfLines =0;
_label.textAlignment =NSTextAlignmentLeft;
_label.lineBreakMode =NSLineBreakByCharWrapping;
_label.text = @"这是一段用来测试的文字,这是一段用来测试的文字, 这是一段用来测试的文字,这是一段用来测试的文字。";
UIFont *font = _label.font;
CGSize labelSize = [selfsizeWithString:_label.textfont:font];
_label.frame =CGRectMake(10,100, labelSize.width -10, labelSize.height);
[self.viewaddSubview:_label];
}
- (CGSize)sizeWithString:(NSString *)string font:(UIFont *)font
{
CGRect rect = [stringboundingRectWithSize:CGSizeMake(kSCREEN_WIDTH,1000)
options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesFontLeading| NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : font}
context:nil];
return rect.size;
}
// NSStringDrawingTruncatesLastVisibleLine 如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略
// NSStringDrawingUsesLineFragmentOrigin 指定的开头从片段开头开始,不总是从头开始
// NSStringDrawingUsesFontLeading 计算行高时使用行间距