 <p>OK, I'm not going to try a fix your code. I'm just going to create constraints that I would use to achieve your layout. I'll put the thought process in comments.</p> <p><strong>First get a nice vertical layout going...</strong></p> <pre><code>// I'm just using standard padding to make it easier to read. // Also, I'd avoid the variable padding stuff. Just set it to a fixed value. // i.e. ==padding not (&gt;=0, &lt;=padding). That's confusing to read and ambiguous. @"V:|-[titleLabel]-[ratingBubbleView]-[descriptionLabel]-|" </code></pre> <p><strong>Then go through layer by layer adding horizontal constraints...</strong></p> <pre><code>// constraint the trailing edge too. You never know if you'll get a stupidly // long title. You want to stop it colliding with the end of the screen. // use &gt;= here. The label will try to take it's intrinsic content size // i.e. the smallest size to fit the text. Until it can't and then it will // break it's content size to keep your &gt;= constraint. @"|-[titleLabel]-&gt;=20-|" // when adding this you need the option "NSLayoutFormatAlignAllBottom". @"|-[ratingBubbleView]-[dateLabel]-&gt;=20-|" @"|-[descriptionLabel]-|" </code></pre> <p>Try not to "over constrain" your view. In your code you are constraining the same views with multiple constraints (like descriptionLabel to the bottom of the superview).</p> <p>Once they're defined they don't need to be defined again.</p> <p>Again, with the padding. Just use <code>padding</code> rather than <code>&gt;=padding</code>. Does >=20 mean 20, 21.5, or 320? The inequality is ambiguous when laying out.</p> <p>Also, In my constraints I have used the layout option to constrain the vertical axis of the date label to the rating view. i.e. "Stay in line vertically with the rating view". Instead of constraining against the title label and stuff... This means I only need to define the position of that line of UI once.</p>