美文网首页
iOS_根据文字字数动态确定Label宽高

iOS_根据文字字数动态确定Label宽高

作者: Dispatch | 来源:发表于2016-04-23 23:24 被阅读0次

    iOS7中用以下方法

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

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

    // iOS7_API_根据文字 字数动态确定Label宽高

    // 设置Label的字体 HelveticaNeueCourier

    UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];

    _nameLabel.font = fnt;

    // 根据字体得到NSString的尺寸

    CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil]];

    // 名字的H

    CGFloat nameH = size.height;

    // 名字的W

    CGFloat nameW = size.width;

    _nameLabel.frame = CGRectMake(0, 0, nameW,nameH);

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

    // 4,根据正文内容多少,动态确定正文content的frame

    // 宽度W

    CGFloat contentW = self.bounds.size.width - _content.frame.origin.x - kMargin;

    // label的字体 HelveticaNeueCourier

    UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];

    _content.font = fnt;

    _content.numberOfLines = 0;

    _content.lineBreakMode = NSLineBreakByWordWrapping;

    // iOS7中用以下方法替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法

    CGRect tmpRect = [_content.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil] context:nil];

    // 高度H

    CGFloat contentH = tmpRect.size.height;

    NSLog(@"调整后的显示宽度:%f,显示高度:%f"contentW,contentH);

    _content.frame = CGRectMake(0, 0, contentW,contentH);

    相关文章

      网友评论

          本文标题:iOS_根据文字字数动态确定Label宽高

          本文链接:https://www.haomeiwen.com/subject/ivfolttx.html