0

我不知道为什么这段代码不起作用,但希望修复很简单,我希望有人能提供帮助。

我有 2 个函数,enterFullScreen 和 exitFullScreen。

在enterFullScreen方法中,我给Window的frame设置了一个NSView的frame,有全屏的效果,这就是我想要的。在此方法中,我存储旧帧,以便在 exitFullScreen 方法中可以将它们重新设置,但这不起作用。它没有任何效果。代码如下:

NSView oldView, oldViewContainer;

- (void) enterFullScreen:(NSView*)newView
{
    // Store original views
    oldView = newView;
    oldViewContainer = _newViewContainer;

    // Set new views to fit window
    [_newViewContainer setFrame:[_window.contentView frame]];    
    [newView setFrame:[_window.contentView frame]];
}

- (void) exitFullScreen:(NSView*)newView
{
    // Restore old views
    [_newViewContainer setFrame:[oldViewContainer frame]];
    [newView setFrame:[oldView frame]];
}

输入全屏方法完全按预期工作,但由于某种原因,我无法将 2 个视图设置回其原始大小/位置。

我不知道是因为我不能只存储整个视图,还是原点导致问题?

我已经尝试了所有组合,如果有人可以提供帮助,我将非常感激。

提前致谢。

4

1 回答 1

1

您不想将 oldView 设置为 newView,这会使它们成为相同的视图,因此当您将 newView 调整为全屏时,oldView 的框架也设置为全屏。您要保存旧框架,而不是视图,因此: oldFrame = newView.frame; (存储原始帧)

那么当你缩小尺寸时,

[新视图 setFrame:oldFrame];

于 2012-04-29T00:24:50.457 回答