调整子视图的大小并使超级视图/窗口调整大小

时间:2010-07-20 18:57:09

标签: cocoa nsview

我的窗口结构如下:NSWindow - > NSView - > NSTabView - > NSScrollView - > NSTextView。如果我使用setFrameSize更改NSScrollView的大小:superviews / window不会调整大小以适应我更大或更小的NSScrollView。当我设置子视图的大小或是否需要以某种方式计算所有UI组件的大小并调整窗口大小时,是否可以以编程方式使Window等自动调整大小?在此先感谢您的任何帮助或指导。

2 个答案:

答案 0 :(得分:3)

没有内置方法可以做到这一点。你必须自己计算尺寸。假设层次结构中的所有视图都设置为正确自动调整大小,您可以只更改窗口的框架并让自动调整大小来完成其工作。

答案 1 :(得分:0)

使用以下方法在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;
    }
}
相关问题