Autolayout lessons:
- Way better in XCode 5 if you're using Storyboards - you don't have to fight with the interface.
- Remember to mark UI elements you create as translatesAutoresizingMaskIntoContstraints = NO (if you want to use AutoLayout)
- Don't bother with using Apple's ways of creating NSLayoutConstraints, it's silly. I have my own little library but this one looks better: https://github.com/cloudkite/Masonry
- ScrollViews need to be treated a little differently, I recommend taking the 100% AutoLayout route https://developer.apple.com/library/ios/technotes/tn2154/_index.html
- NSLayoutConstraint's created in IB can be hooked in to your controller via Outlets - it's a little messy but good for small layout tweaks from code
- Animations behave differently, the bit that "triggers" the layout change is [somesuperview layoutIfNeeded] so that should be inside your UIView animation block (http://stackoverflow.com/questions/13296232/ios-how-does-one-animate-to-new-autolayout-constraint-height)
- After manually manipulating the view hierarchy you have to trigger layoutIfNeeded
- Use Reveal (super amazingly useful) http://revealapp.com/