ios – UILabel文本第一行的中心图像

前端之家收集整理的这篇文章主要介绍了ios – UILabel文本第一行的中心图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将图像居中到我的UILabel第一行文本的中心Y位置.我使用masonry来设置自动布局约束:

[_haveReadIndicatorImgView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.left.equalTo(self.contentView).offset(SMALL_OFFSET);
        make.height.width.equalTo(@(8));
    }];

    [_topTxtlbl mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(_haveReadIndicatorImgView.mas_right).offset(TINY_OFFSET);
        make.top.equalTo(_haveReadIndicatorImgView.mas_top);
        make.right.equalTo(self.arrowImgView.mas_left).offset(-SMALL_OFFSET);
        make.bottom.equalTo(_dateTxtLbl.mas_top).offset(-SMALL_OFFSET);
    }];

它应该非常明确.我只是将UIImageView的顶部附加到我的标签顶部.

但看看屏幕.

enter image description here

UIImageView(灰点)和标签的上边缘相等,但如何使UIImageView居中于第一行文字

enter image description here

谢谢.

解决方法

我通过两个步骤实现以下目标:

1)用特定字体计算文本标签行的预期高度:

+(CGSize)getSimpleSizeBasedOnFont:(CGFloat)font{

    UILabel *lbl = [UILabel new];
    lbl.text = @"Simple text";
    lbl.font = [UIFont systemFontOfSize:font];

    return [lbl.text sizeWithFont:lbl.font
                                constrainedToSize:lbl.frame.size
                                    lineBreakMode:NSLineBreakByWordWrapping];
}

>然后我添加约束到UIImage视图的中心Y,偏移量等于该高度的50%:

CGFloat lblOffs = [Helper getSimpleSizeBasedOnFont:14] .height;        [_haveReadIndicatorImgView mas_makeConstraints:^(MASConstraintMaker * make){            make.centerY.equalTo(_topTxtlbl.mas_top).offset(lblOffs / 2);            make.left.equalTo(self.contentView).offset(SMALL_OFFSET);            make.height.width.equalTo(@(8));        }];

猜你在找的iOS相关文章