记录一个Masonry 添加约束导致的label 文案展示不全的问题

news/2024/7/20 21:12:39 标签: ui, ios

问题如图,蓝色label 中的文字没有展示完全,后面还有“情。”
请添加图片描述

原因,我们使用masonry 布局的时候,宽度会有细微的误差,导致我们实际
添加的约束比我们期望的要小,就导致横向无法容下期望的文字宽度,导致无法展示完全

高度计算
请添加图片描述

添加约束请添加图片描述

请添加图片描述
修复方法

使用frame 布局

- (void)layoutSubviews
{
    [super layoutSubviews];
    /*这里之所以使用frame 设置 descLabel的布局,是因为在使用maronry的时候,遇到过一个bug,
     使用masonry 添加约束, descLabel 的宽度, 略小于 SCREEN_WIDTH - 60*rectScale()
     导致我们计算高度使用的高度和实际展示的宽度不一致,就会造成UI问题
     */
    if (!isBlankString(self.listBO.summary)) {
        CGFloat sumHeight = heightForAttributeStringWithLabel(self.descLabel.attributedText, SCREEN_WIDTH - 60*rectScale(), appFont(15*rectScale(), NO));
        CGFloat imagHeight = 0;
        if (!isBlankString(self.listBO.pic)) {
            self.descLabel.frame = CGRectMake(30 * PLUS_SCALE, CGRectGetMaxY(self.imageV.frame) + 10 * PLUS_SCALE, SCREEN_WIDTH - 60 * PLUS_SCALE, sumHeight);
        } else {
            self.descLabel.frame = CGRectMake(30 * PLUS_SCALE, CGRectGetMaxY(self.titleLabel.frame) + 10 * PLUS_SCALE, SCREEN_WIDTH - 60 * PLUS_SCALE, sumHeight);
        }
    } else {
        self.descLabel.frame = CGRectMake(30 * PLUS_SCALE, CGRectGetMaxY(self.imageV.frame) + 10 * PLUS_SCALE, SCREEN_WIDTH - 60 * PLUS_SCALE, 0);
    }
}


修复之后效果图
请添加图片描述


http://www.niftyadmin.cn/n/478780.html

相关文章

接口里是否能有实现方法?

1、default方法 接口里在java8后容许有接口的实现,default方法默认实现 default int div(int x,int y) {return x/y;}接口里default方法可以有几个? 多个默认方法。 2、静态方法实现 静态方法实现:接口新增 public static int sub(int x…

【数据库】MySQL的主从复制模式

MySQL的主从复制模式包括异步复制,全同步复制,半同步复制。MySQL默认为异步模式。MySQL5.7引入了一种新的半同步方案,并且在5.7引入了一个新的参数,rpl_semi_sync_master_wait_point,这个参数有两种取值,1&…

【多种优化算法比较】混沌引力搜索算法(CGSA)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Unity URP之Post-processing

使用方法与各效果介绍 地址记录: Unity URP中的Post-processing_popcorn丶的博客-CSDN博客Unity Post-Processing学习(一) ------ 简介与使用 - 简书

软考高级系统架构设计师(五) 系统性能评价

目录 概要 性能指标 性能调整 ​阿姆达尔 性能评价 概要 性能指标 参考:【软考-系统架构设计师】知识要点-8 - 知乎 响应时间: 0.1秒:用户感觉不到任何延迟;1.0秒:用户愿意接受的系统立即响应的时间极限&#x…

【Axure视频教程】固定中继器表格首列

今天教大家在Axure里如何制作固定中继器表格首列的原型模板,包括固定首列和固定前两列两个案例,因为是用中继器表格制作的,所以使用也非常方便,我们只需要在中继器表格里维护数据,即可自动生成效果。该教程从0开始制作…

☆Image captioning☆论文show,attend and tell的程序中train.py代码详解

手把手实现Image captioning,论文show,attend and tell的程序中train.py代码详解。如果感觉有用,不妨给博主来个一键三连,白天科研,晚上肝文,实属不易~ ~ 1. 代码段1 import time import torch.backends.cudnn as cudnn import torch.optim import torch.utils.…

pojo to json 下载 与 使用

下载 注意点使用 makejson搜索如图所示,主要参考文章看引用 使用 在类名 上右键点击makjson即可 https://blog.csdn.net/w8y56f/article/details/127506855 https://songzixian.com/amp/1432.html