iOS 用Msonry布局动态获取label的高度,label无法正常加载全部的内容iOS 用Msonry布局动态获取label的高度,label无法正常加载全部的内容

设置label自动换行 自适应内容高度,就是无法正常显示有一部分内容没有显示出来,没有找到造成这样的原因但是解决了,就是你获取到内容高度时再加1就能在正常显示了,贴一下代码:

定义了一个宏计算文本内容高度

LabelSize(text,font,W,H) [text boundingRectWithSize:CGSizeMake(W,H) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil].size

这是测试代码

 NSString *testStr=@"主控项目:(1)所用材料品种、型号、颜色、性能等应符合设计要求。所选用乳胶漆有害物质含量必须满足《民用建筑工程室内环境污染控制规范》(GB50325-2001)的规定。2)乳胶漆涂饰工程的颜色、光泽和图案应符合设计要求。(3)乳胶漆涂饰工程应涂饰均匀,粘结牢固,无露涂、透底、脱皮、反绣和斑迹。(4)乳胶漆涂饰工程的基层处理应符合下列规定:新建筑物的混凝土或抹灰基层在涂饰涂料前应涂刷抗碱封闭底漆。旧墙面在涂饰涂料前应清除疏松的旧装修层,并涂刷界面剂。混凝土或抹灰基层含水率不得大于10%。基层腻子应平整、坚实、牢固,无粉化、起皮和裂缝。2)  一般项目:(1)混凝土及抹灰面刷乳胶漆的质量和检验方法应符合下表的规定。混凝土及抹灰面刷乳胶漆的质量和检验方法(2)涂层与其他装修材料和设备斜街处应吻合,界面应清晰。";

    CGFloat textH=[Tools textHeightFromTextString:testStr width:ScreenWidth-20 fontSize:16.0];

    CGSize size=LabelSize(testStr, [UIFont systemFontOfSize:16.0], ScreenWidth-20, 0);

    testlab2.text=testStr;

    testlab2.backgroundColor=[UIColor whiteColor];

    testlab2.numberOfLines=0;

    testlab2.font=[UIFont systemFontOfSize:16.0];

    [self.view addSubview:testlab2];

    [testlab2 mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.view.mas_left);

        make.top.equalTo(self.view.mas_top).offset(64);

        make.width.mas_equalTo(ScreenWidth-20);

        make.height.mas_equalTo(size.height+1);

    }];


 make.height.mas_equalTo(size.height+1);这一句如果不加1文本内容就没法正常显示(我不知道是什么原因)

还有第二种解决办法:

 UILabel *label3=[[UILabel alloc] initWithFrame:CGRectZero];

    [self.view addSubview:label3];

    label3.backgroundColor=[UIColor whiteColor];

    label3.text=testStr;

    label3.preferredMaxLayoutWidth=self.view.frame.size.width-20;

    [label3 setContentHuggingPriority:UILayoutConstraintAxisVertical forAxis:UILayoutConstraintAxisVertical];

    label3.numberOfLines=0;

    [label3 mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.view.mas_left).offset(10);

        make.right.equalTo(self.view.mas_right).offset(-10);

        make.top.equalTo(self.view.mas_top).offset(64);

        make.width.mas_equalTo(ScreenWidth-20);

    }];

如果有帮到你请点赞评论关注,共同学习和交流

相关文章:

  • 2021-10-26
  • 2022-12-23
  • 2021-12-17
  • 2022-12-23
  • 2021-04-22
  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案