Next: 1.7 Expanding views over Up: 1. Renaissance AutoLayout Previous: 1.5 The minimum size

1.6 Renaissance AutoLayout support for minimum sizes

Renaissance AutoLayout adds two methods to NSView in order to support minimum size:

-minimumSizeForContent is somewhat more primitive than -sizeToFitContent, and the natural implementation of -sizeToFitContent would simply be

- (void) sizeToFitContent
{
  [self setFrameSize: [self minimumSizeForContent]];
}

Unfortunately, the OpenStep API works the other way round: it does not provide anything equivalent to -minimumSizeForContent, while for most views and controls in the AppKit, it provides a -sizeToFit which is often roughly equivalent to -sizeToFitContent, or enough to implement it modulo adjustments.

So the standard implementation of -sizeToFitContent for most of the AppKit views and controls is done by calling -sizeToFit (but this needs to be reviewed for every control), while the default NSView's implementation of -minimumSizeForContent works by saving the view's frame, then resizing the view to its minimum frame by calling -sizeToFitContent, grasping the resulting frame, then setting back the view's frame to its original size.

Because of this very clumsy and inefficient implementation, it is recommended that you try to avoid using -minimumSizeForContent if you can.


Next: 1.7 Expanding views over Up: 1. Renaissance AutoLayout Previous: 1.5 The minimum size
2008-03-19