美文网首页
6.根据文字内容计算label的宽度和高度

6.根据文字内容计算label的宽度和高度

作者: 枫之叶_小乙哥 | 来源:发表于2018-12-11 17:43 被阅读5次

    1.1 获取所有字体

        //获取到所有的字体名称
        NSArray *familyNames = [UIFont familyNames];
        NSLog(@"所有字体名称--%@",familyNames);
    
    

    1.2 单行文本

    对于单行文本来说,直接使用sizeWithAttributes方法,如下:

    - (void)viewDidLoad {
        [super viewDidLoad];
        //获取到所有的字体名称
        NSArray *familyNames = [UIFont familyNames];
        NSLog(@"所有字体名称--%@",familyNames);
        UILabel *lbl_text = [[UILabel alloc]init];
        lbl_text.backgroundColor = [UIColor greenColor];
        lbl_text.text = @"我们是一家人";
        // 设置Label的字体 HelveticaNeue  Courier
        UIFont *fnt = [UIFont fontWithName:@"Courier New" size:24.0f];
        lbl_text.font = fnt;
        // 根据字体得到NSString的尺寸
        CGSize size = [lbl_text.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName,nil]];
        // 名字的H
        CGFloat nameH = size.height;
        // 名字的W
        CGFloat nameW = size.width;
        lbl_text.frame = CGRectMake(100,100, nameW,nameH);
        [self.view addSubview:lbl_text];
    }
    

    1.2多行文本

    首先UILabel的numberOfLines设置为0,其次通过- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context方法来计算CGSize,具体代码如下:

    - (void)viewDidLoad {
        [super viewDidLoad];
        //获取到所有的字体名称
        NSArray *familyNames = [UIFont familyNames];
        NSLog(@"所有字体名称--%@",familyNames);
        [self setMultiLine];
    }
     
    - (void)setMultiLine
    {
        UILabel *lbl_text = [UILabel new];
        lbl_text.font = [UIFont systemFontOfSize:14];
        lbl_text.text = @"文字在语言学中指书面语的视觉形式,古代把独体字叫做“文”,把合体字叫做“字”,如今联合起来叫做“文字”,文字的基本个体叫做“字”。在日常生活中,“文字”还可以指书面语、语言、文章、字等。视觉符号形式,突破口语的时间和空间限制。例如汉字、拉丁字母。";
        lbl_text.backgroundColor = [UIColor greenColor];
        lbl_text.numberOfLines = 0;//多行显示,计算高度
        lbl_text.textColor = [UIColor lightGrayColor];
        CGSize lblSize = [lbl_text.text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size;
        lbl_text.frame = CGRectMake(10, 100, lblSize.width, lblSize.height);
        [self.view addSubview:lbl_text];
    }
    
    

    参考自:https://blog.csdn.net/minggeqingchun/article/details/52583709

    相关文章

      网友评论

          本文标题:6.根据文字内容计算label的宽度和高度

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