Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 设置NSView的帧时出错_Objective C_Xcode_Cocoa - Fatal编程技术网

Objective c 设置NSView的帧时出错

Objective c 设置NSView的帧时出错,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,我不知道为什么这段代码不起作用,但希望修复是简单的,我希望有人能帮助 我有两个功能,enterFullScreen和exitFullScreen 在enterFullScreen方法中,我将NSView的帧设置为具有全屏效果的窗口帧,这就是我想要的。在这个方法中,我存储旧的帧,以便在exitFullScreen方法中我可以将它们设置回原来的位置,但这不起作用。它没有任何效果。代码如下: NSView oldView, oldViewContainer; - (void) enterFullSc

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

我有两个功能,enterFullScreen和exitFullScreen

在enterFullScreen方法中,我将NSView的帧设置为具有全屏效果的窗口帧,这就是我想要的。在这个方法中,我存储旧的帧,以便在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]];
}
enterfullscreen方法完全按照预期工作,但由于某些原因,我无法将这两个视图设置回其原始大小/位置

我不知道这是因为我不能只存储整个视图,还是源代码导致了问题

我试过各种组合,如果有人能帮我,我会非常感激的


提前感谢。

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

然后当你调整尺寸时


[新视图设置帧:旧帧]

谢谢你的回答,但如果你有你的窗口,新视图和框架是一个特定的大小,你存储框架。当您调整视图大小,所有内容都调整大小,并且您将框架设置为旧框架时,它的大小将是错误的?我想我在您的另一个问题中回答了这个问题--您需要在窗口委派方法windowDidResize中处理它:这将在您调整窗口大小后调用,因此,你可以将该方法中的oldFrame更改为任何合适的。是的,很抱歉,我不希望对两个问题有相同的答案。在didResize方法中添加代码来更改变量将非常占用处理器。现在,我将自定义视图放在旧视图上作为占位符,并在设置回旧尺寸时使用它们的框架,这非常有效,即使这不是最干净的东西。