изменение размера подпредставления и изменение размера суперпредставления/окна

Мое окно устроено так: NSWindow -> NSView -> NSTabView -> NSScrollView -> NSTextView. Если я изменю размер NSScrollView с помощью setFrameSize: суперпредставления/окна не изменятся, чтобы приспособить мой больший или меньший NSScrollView. Возможно ли программно изменить размер окна и т. д., когда я устанавливаю размер подпредставления, или мне нужно каким-то образом вычислить размер всех компонентов пользовательского интерфейса и изменить размер самого окна? Заранее спасибо за любую помощь или направление.


person stdout    schedule 20.07.2010    source источник


Ответы (2)


Нет встроенного способа сделать это. Вам придется вычислить размеры самостоятельно. Предполагая, что все представления в вашей иерархии настроены на автоматическое изменение размера, вы можете просто изменить рамку окна и позволить автоматическому изменению размера выполнить свою работу.

person Joshua Nozzi    schedule 20.07.2010
comment
Спасибо Джошуа. Теперь, по крайней мере, я могу перестать искать эти несуществующие методы. :) - person stdout; 21.07.2010

Создайте категорию в UIView следующим методом:

- (void) resizeSuperviewsToContain {
    UIView* view = self;
    while(view.superview) {
        CGFloat maxY = CGRectGetMaxY(view.frame);
        CGRect superViewFrame = view.superview.frame;
        if(superViewFrame.size.height < maxY) {
            superViewFrame.size.height = maxY;
            view.superview.frame = superViewFrame;
        }
        view = view.superview;
    }
}
person bbrame    schedule 18.04.2013