【问题标题】:Resizing NSWindow to fit child NSView调整 NSWindow 的大小以适应子 NSView
【发布时间】:2012-04-16 16:20:56
【问题描述】:

我有一个空的主 NSWindow 和 5 个 NSView。 NSViews 有不同的按钮和标签等,窗口是空的。显示的第一个视图是一个菜单,链接到其他视图并返回。这工作正常,视图切换良好。

但是,如果 NSWindow 是一定的大小,并且 NSView 更大,那么它会溢出 NSWindow 并被切断。

有什么办法可以让我这样做:

[_window setContentView: theNewView];

还要让_window 调整大小以适应新视图?如果可以的话,可以用动画来完成吗?

【问题讨论】:

    标签: objective-c cocoa nswindow


    【解决方案1】:

    -[NSWindow setContentSize:] 这样做(没有动画)。给它所需的内容视图大小,它会适当地调整内容视图和窗口的大小,例如

    [_window setContentSize:theNewView.frame.size];
    [_window setContentView:theNewView];
    

    对于动画,您需要使用frameRectForContentRect: 手动计算窗口大小,然后使用animate:YES 更改窗口的框架:

    [_window setContentView:theNewView];
    NSRect viewScreenFrame = /*translate theNewView.frame to screen coordinates*/;
    NSRect wndFrame = [_window frameRectForContentRect:viewScreenFrame];
    [_window setFrame:wndFrame display:YES animate:YES];
    

    【讨论】:

    • 工作出色。我到处找,一无所获,但答案很简单。谢谢!
    • 有没有机会告诉我如何将视图转换为坐标?
    • 我想通了 - cocoabuilder.com/archive/cocoa/… 再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 2011-06-12
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多