麻烦设置NSView的框架

时间:2012-04-28 20:13:43

标签: objective-c xcode cocoa

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

我有2个函数,enterFullScreen和exitFullScreen。

在enterFullScreen方法中,我将一个NSView的框架设置为Window的框架,它具有全屏效果,这就是我想要的。在这个方法中,我存储旧帧,以便在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个视图设置回其原始大小/位置。

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

我尝试过各种组合,如果有人能提供帮助,我会非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

然后当你调整小一点时,

[newView setFrame:oldFrame];