Was about to tear my own hair off due to issue with
UIStackView and autolayout. Here's a simplified version of my view hierarchy:
- UIStackView - MyCustomView - UILabel - MyCustomView - UILabel - MyCustomView - UILabel
The stack view are laying the custom views out in a horizontal fashion. Now, whenever I added a constraint similar to this:
let xConstraint = NSLayoutConstraint(item: label, attribute: .Left, relatedBy: .Equal, toItem: self, attribute: .Left, multiplier: 1.0, constant: 20)
to my custom view (where
self in this case is the custom view) would make the stack view shift all content way off to the left.
Took a while to figure out that the reason for this was a line that I automatically add to all of my views as soon as I need to do some programmatic autolayouting:
self.translatesAutoresizingMaskIntoConstraints = false
Ie, I was disabling autoresize mask translation for my custom view. Turns out the stack views are somehow making use of those.. I guess?