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

问题如图,蓝色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);
    }
}


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

猜你喜欢

转载自blog.csdn.net/LIUXIAOXIAOBO/article/details/131407070