美文网首页
iOS label代码自适应高度宽度

iOS label代码自适应高度宽度

作者: HelloWong | 来源:发表于2021-04-09 15:42 被阅读0次

    第一种:

    UILabel *label = [[UILabel alloc] init];

    label.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];

    label.text = @"大师傅好搜啊发";

    label.numberOfLines = 0;

    CGSize size = CGSizeMake(100, MAXFLOAT);//设置高度宽度的最大限度 CGRect rect = [label.text boundingRectWithSize:size options:NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:20]} context:nil];

    label.frame = CGRectMake(100, 100, rect.size.width, rect.size.height); self.view addSubview:label];
    其实就是使用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary*)attributes context:(nullable NSStringDrawingContext *)context 这个方法

    参数:

    size:宽高限制,用于计算文本绘制时占据的矩形块。

    options: 文本绘制时的附加选项

    NSStringDrawingUsesLineFragmentOrigin//整个文本将以每行组成的矩形为单位计算整个文本的尺寸

    NSStringDrawingUsesFontLeading//以字体间的行距

    NSStringDrawingUsesDeviceMetrics //计算文本尺寸时将以每个字或字形为单位来计算。

    NSStringDrawingTruncatesLastVisibleLine//计算文本尺寸时将以每个字或字形为单位来计算。

    可以组合试一下达到自己想要的效果

    attributes:对字体、颜色、行距、字间隔等等一些设置,使用字典来做一些属性设置

    context:上下文,该参数可为 nil 。

    第二种:

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 0)];

    label.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];

    label.text = @"我会自己去适应";

    label.numberOfLines = 0;

    [label sizeToFit];

    [self.view addSubview:label];
    其实就是使用 [label sizeToFit];让label自己去适应

    或者使用sizeThatFits:方法自己定义宽高

    CGSize size = [label sizeThatFits:CGSizeMake(100, MAXFLOAT)];

    label.frame = CGRectMake(100, 100, size.width, size.height);

    第三种:

    UILabel *label = [[UILabel alloc] init];

    label.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];

    label.text = @"我会自己去适应宽度的";

    label.font = [UIFont systemFontOfSize:50];

    CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:50]}];

    //ceilf()向上取整函数, 只要大于1就取整数2. floor()向下取整函数, 只要小于2就取整数1.

    CGSize adaptionSize = CGSizeMake(ceilf(size.width), ceilf(size.height));

    label.frame = CGRectMake(100, 100, adaptionSize.width, adaptionSize.height);

    [self.view addSubview:label];
    这种方法只能适应一行的宽高,高度也是根据字体的大小来变化的

    相关文章

      网友评论

          本文标题:iOS label代码自适应高度宽度

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