我想将图像居中到我的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的顶部附加到我的标签顶部.
但看看屏幕.
UIImageView(灰点)和标签的上边缘相等,但如何使UIImageView居中于第一行文字?
谢谢.
解决方法
我通过两个步骤实现以下目标:
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)); }];