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;
        }
  • 相关阅读:
    JSP使用ENCTYPE="multipart/formdata"后request.getParameter无效问题CommonFileUpload组件解决方法
    HTML基础之标签的使用 标签的语义化使用
    ASP.NET(C#)发送电子邮件的方法
    处理程序“PageHandlerFactoryIntegrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    jQuery表单Input文本框默认说明文字获得焦点后消失效果
    DLL 函数导出和使用
    VBScript 常用函数与类型转化
    修改属性页CPropertyPage标题
    MSDN 无法显示该网页的解决方法
    sqlite3 编译
  • 原文地址:https://www.cnblogs.com/Ewenblog/p/11323204.html
Copyright © 2011-2022 走看看