我不知道为什么这段代码不起作用,但希望修复很简单,希望有人可以提供帮助。
我有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个视图设置回其原始大小/位置。
我不知道是不是因为我不能只存储整个视图,或者原点是否导致问题?
我尝试过各种组合,如果有人能提供帮助,我会非常感激。
提前致谢。
答案 0 :(得分:1)
您不希望将oldView设置为newView,这使它们成为相同的视图,因此当您将newView调整为全屏时,oldView的框架也会设置为全屏。您想保存旧框架而不是视图,因此: oldFrame = newView.frame; (存储原始框架)
然后当你调整小一点时,
[newView setFrame:oldFrame];