zoukankan      html  css  js  c++  java
  • ios label根据内容自适应高度

    label自适应高度,想必大家也都很熟悉怎么去做,上代码:

    UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(150, 50, 150, 0)];
    
        label3.font = [UIFont systemFontOfSize:15];
    
        label3.backgroundColor = [UIColor yellowColor];
    
        label3.numberOfLines = 0;
    
        label3.text = str;
    
        CGSize size = [label3 sizeThatFits:CGSizeMake(label3.frame.size.width, MAXFLOAT)];
    
        label3.frame = CGRectMake(label3.frame.origin.x, label3.frame.origin.y, label3.frame.size.width,            size.height);
    
        NSLog(@"label3.frame = %@",NSStringFromCGRect(label3.frame));
    
        [self.view addSubview:label3];
    
    

    但是这个地方有点小问题,###1:我不知道大家处理的习惯(比较菜,勿喷),我比较习惯把处理UI的逻辑和赋值的逻辑分开,那么就会有这样的代码

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        [self initUI];
        
        self.label.text = @"啥都不是较好的发布会绝对是部分谁看见对方比较快速的步伐会尽快";
        
    }
    
    -(void)initUI
    {
        self.label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 100, 30)];
        self.label.numberOfLines = 0;
        self.label.textColor = [UIColor blackColor];
        CGSize size = [self.label sizeThatFits:CGSizeMake(self.label.frame.size.width, MAXFLOAT)];
        self.label.frame = CGRectMake(self.label.frame.origin.x, self.label.frame.origin.y, self.label.frame.size.width, size.height);
        
         [self.view addSubview:self.label];
    }
    

    但是运行后你会发现,什么也没有!打印label.frame--- label[18169:1891997] {{10, 100}, {100, 0}} 这是因为我们在initUI方法中并没有给label赋值,那么label的高度默认为0了,所以处理自适应的时候只能在赋值之后再进行自适应的操作。

    第二个问题:如果我们有那种对齐的需求的话,如果文字比较少,那么可能会出现文字偏上的效果,这时候我们可以在自适应后,根据label高度判断,修改其高度。如下:

        self.titleL.text = model.cooperationInverseVO.ipDemandtitle;
        CGSize size = [self.titleL sizeThatFits:CGSizeMake(self.titleL.frame.size.width, MAXFLOAT)];
        self.titleL.frame = CGRectMake(self.titleL.frame.origin.x, self.titleL.frame.origin.y, self.titleL.frame.size.width, size.height);
        self.titleL.textColor = [UIColor colorWithHexString:@"#666666"];
        ///如果高度不足一行 强制为原来一行的高度
        if (self.titleL.hb_height < cellHeight) {
            self.titleL.hb_height = cellHeight;
        }
  • 相关阅读:
    Sublime Text 3 安装插件管理 Package Control
    Sublime Text 2&3中输入法不跟随光标移动的问题的解决方法
    Centos 7 yum 安装php
    Centos 7 yum 安装Apache
    正则验证多个邮箱用分号隔开
    Linux下修改网卡IP、DNS和网关
    mysqldump when doing LOCK TABLES问题
    jQuery遍历json
    Yii中CDbCriteria常用方法
    Parse error: syntax error, unexpected T_PUBLIC in 问题解决
  • 原文地址:https://www.cnblogs.com/Ewenblog/p/11323204.html
Copyright © 2011-2022 走看看