You can use it to approximate conditional logic.
For example, I had a cropping view (imagine a circle cut-out for a face profile). If the image was portrait, I wanted the circle to be near the top, but if the image was landscape, there would be no room to have it off-centered, and it would not make sense.
To address these two cases, I first set bounding constraints - the overlay should always be within the image view (using <= / >= constraints on the contants from the edges). I then had another constraint at a lower priority saying that ideally it would be above center, but a fallback constraint below that saying otherwise I wanted it centered. Those last two constraints cause a conflict, but the layout engine chooses the highest priority. In the landscape case, the above-center was not possible, so AL broke that and was left with the centered constraint.
Another example - and one which is also in the code snippet below, is that I wanted my overlay to use as much space as possible, while maintaining the proper aspect ratio. This meant that while my outer constraints were absolute, I declared the ideal cropping frame to be at the borders, knowing that only one set could be satisfied at at time, but that the aspect ratio takes priority. AL then breaks as many as it has to - which is two, in each orientation, leaving the other two in tact. Without that, there would be many possible solutions to the problem.
In my actual code, I captured these as an array of constraints. each created by a lazy instance variable:
self.addConstraints([
// absolute constraints
self.leftMarginConstraint,
self.rightMarginConstraint,
self.topMarginConstraint,
self.bottomMarginConstraint,
self.aspectRatioConstraint,
self.constrain(self.maskContainer, self, .CenterX, .Equal),
// hug the edges as much as possible, but only two of the four will be used
self.constrain(self.maskContainer, self, .Left, .Equal, priority:900),
self.constrain(self, self.maskContainer, .Right, .Equal, priority:900),
self.constrain(self.maskContainer, self, .Top, .Equal, priority:900),
self.constrain(self, self.maskContainer, .Bottom, .Equal, priority:900),
// try for above center, but accept vertically centered
self.constrain(self.maskContainer, self, .CenterY, .Equal, priority:800, multiplier:0.8),
self.constrain(self.maskContainer, self, .CenterY, .Equal, priority:500),
])