Thanks all for your replies.
Matt is correct. A quick test with this code after subviews has gotten new values (calculated with some analytic formula)
for each subview
{
subview.frame = NSMakeRect((int)subview.frame.origin.x, (int)subview.frame.origin.y, (int)subview.frame.size.width, (int)subview.frame.size.height);
}
fixes the problem.
I also bumped into a similar problem on iOS. After calculating new values for frames and not rounding them off properly fonts in UILabel subviews can become a bit blurry.
Regarding the draw order. Of course the draw order should be in the order the subviews are ordered in subviews array.
Why else is there a method for inserting subviews at different depths?
Even if it's not documented it's the natural way to do it. It seems that this is also the case so no point arguing about it :)
Maybe Cocoa is a bit different but in Cocoa Touch you have subviews overlapping each other all the time I can't imaging how it would be if draw order is undefined.