您的位置:首页 > 产品设计 > UI/UE

iOS UILable根据文本内容自适应高度

2015-08-10 14:10 645 查看
#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 计算行高时使用行间距
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios UILabel