【问题标题】:resizing a subview and having superviews / window resize调整子视图的大小并调整超级视图/窗口大小
【发布时间】:2011-03-18 14:59:41
【问题描述】:

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

【问题讨论】:

    标签: cocoa nsview


    【解决方案1】:

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

    【讨论】:

    • 谢谢约书亚。现在至少我可以停止搜索这些不存在的方法了。 :)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多