使用AutoLayout以编程方式将多行UILabel的第一行与UIImage对齐(Objective-C)

Ran*_*ndy 4 objective-c ios nsautolayout

我正在尝试将多行UILabel与UIImage对齐.问题是:我希望水平地将此标签的第一行与图像对齐.

我尝试了什么:

1 - 将图像与整个UILabel对齐,所以基本上我仍然想要拍摄图像.

[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[image(width)]-8-[multiLinesLabel]|" options:NSLayoutFormatAlignAllCenterY metrics:metrics views:views]];
Run Code Online (Sandbox Code Playgroud)

2 - 所以我尝试了这个,但后来图像太高了.

[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[image(width)]-8-[multiLinesLabel]|" options:NSLayoutFormatAlignAllTop metrics:metrics views:views]];
Run Code Online (Sandbox Code Playgroud)

有人有想法这样做吗?

提前致谢

编辑:我终于做到了这样的伎俩:

[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[image(width)]-8-[multiLinesLabel]|" options:kNilOptions metrics:metrics views:views]];

[containerView addConstraint:[NSLayoutConstraint
                                      constraintWithItem:image
                                      attribute:NSLayoutAttributeTop
                                      relatedBy:NSLayoutRelationEqual
                                      toItem:multiLinesLabel
                                      attribute:NSLayoutAttributeTop
                                      multiplier:1.0
                                      constant:3.0]];
Run Code Online (Sandbox Code Playgroud)

我并不为我感到骄傲,这不是一个解决问题的干净方法,但它确实有效.如果有人想到其他解决方案......

Ben*_*ard 12

您可以使用相同的字体和单个文本字符添加单行虚拟标签.把它隐藏起来.将其定位为与图像对齐,然后定位多行标签的上边缘以与虚拟标签对齐.