This took me a while to sort out, but I finally figured it out.
Basically if you want to have the documentView of a NSScrollView be centered in the view if the content area of the NSScrollView is bigger than the size of the document view, you would override the NSClipView class with a custom class. This class would then implement the -constrainBoundsRect: method as follows:
@implementation GClipView
- (NSRect)constrainBoundsRect:(NSRect)proposed
{
NSRect r = [super constrainBoundsRect:proposed];
NSRect doc = [self.documentView frame];
if (proposed.size.width > doc.size.width) {
r.origin.x = floor((doc.size.width - proposed.size.width)/2);
}
if (proposed.size.height > doc.size.height) {
r.origin.y = floor((doc.size.height - proposed.size.height)/2);
}
return r;
}
@end