15
votes

screenshot

I want to have the bottom view be at least 20 away from both the image and the label above it. The label is multiline, so it can be taller or shorter than the image view, depending on how much text there is. When I add two "distance to nearest neighbour >= 20" constraints like shown in the screenshot, Xcode tells me constraints are ambiguous.

How do I fix it?

1
How do you want the label to line up with the image view? If it's a single line, should it line up with the top? The bottom? The middle? As it gets taller, do you want the tops to line up until it's too tall to stay 20 away from the bottom view, and then move up? There are several scenarios you could envision, and they all require different solutions. You should be more explicit about what you want. - rdelmar
@rdelmar they are not aligned relatively to each other vertically (there is another label above this label, and both image and top label are aligned against superview top border). Effectively their tops line up and bottoms vary. - Alex B
Then, if the label gets too long, do you want the bottom view to get shorter, or move down? Also, does the image view have a fixed height? - rdelmar
@rdelmar bottom view is pushed down, image is fixed height. - Alex B

1 Answers

27
votes

I think you can do it like this, if I understand your requirements:

enter image description here

The image view has a fixed width and height, and constraints to the left side and top, as well as a constraint to the bottom view of =20 with a priority of 700. That's crucial -- that will set the y position of that bottom view (which has fixed height and constraints to the two sides), but will allow it to move lower if another constraint with higher priority makes it. That constraint with higher priority is the constraint to the label -- it's >=20 with priority of 1000 (the label also has constraints to the top, right side, and trailing edge of the image view).