OSX Lion:全屏和窗口模式下的不同视图

时间:2012-01-26 13:58:29

标签: objective-c macos cocoa fullscreen

我正在努力使窗口中包含的某个视图成为切换全屏模式时的主要内容视图,并在用户离开全屏模式时返回到仅占用窗口的一部分。

我想出了以下内容:

- (void)windowWillEnterFullScreen:(NSNotification *)notification
{
    NSLog(@"entering fullscreen");
    oldView = [[[NSApplication sharedApplication] mainWindow] contentView];
    [oldView retain];
    [[[NSApplication sharedApplication] mainWindow] setContentView:myViewOfInterest];
}

-(void)windowWillExitFullScreen:(NSNotification *)notification
{
    [[[NSApplication sharedApplication] mainWindow] setContentView:oldView];
}

然而,这仅适用于第一位:窗口最大化并且感兴趣的视图成为唯一的一个,但是当保留全屏模式时,全屏模式中唯一可见的视图不再在窗口中。

我对Objective-C和Cocoa很新,所以有人能告诉我我做错了什么吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

视图一次只能是另一个视图的子视图。当您将myViewOfInterest设置为窗口的contentView时,oldView将作为oldView的子视图(视图层次结构)的子视图被删除。当您稍后恢复myViewOfInterest时,您需要将{{1}}添加回原来的位置(以及它的大小等)。