I have a UIViewController which I add to another UIViewController as a child. When the child gets added, the parent set frame on my child using childVC.frame = ...., but this fubars my constraints.
I can duplicate this issue in IB easily. Create a UIViewController, change the size to be "Freeform" and ditch the status bar (just so it looks right visually). Add in a UIButton (or anything) and constraints so so they are both the same size (see image below)

Now change the size of the top level view in the view controller and watch what happens.

It changed my constraints on me. I wanted my button to just get bigger and still hold the original constraints. Something which happens automatically if you toggle between iPhone retina 3.5/4.0 in screen or change from landscape to portrait. But why not when I resize the view? This is making a royal pain to lay things out in freeform and test different sizes.
More importantly... why does the exact same thing happen when I set the frame in code when I add the child for my VC and how do I prevent it?
setFrame:- everything is constraints based. So you should be editing the constraints that apply to your child view control let's view, not setting its frame.superviewwill be width/height" and have it re-display with the existing constraints. Next I'm going to try mucking in the XML file. Maybe if I modify my view controller width/height values there it will leave my constraints untouched. Probably not, but worth a test.