Objective c 设置NSView的帧时出错
我不知道为什么这段代码不起作用,但希望修复是简单的,我希望有人能帮助 我有两个功能,enterFullScreen和exitFullScreen 在enterFullScreen方法中,我将NSView的帧设置为具有全屏效果的窗口帧,这就是我想要的。在这个方法中,我存储旧的帧,以便在exitFullScreen方法中我可以将它们设置回原来的位置,但这不起作用。它没有任何效果。代码如下:Objective c 设置NSView的帧时出错,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,我不知道为什么这段代码不起作用,但希望修复是简单的,我希望有人能帮助 我有两个功能,enterFullScreen和exitFullScreen 在enterFullScreen方法中,我将NSView的帧设置为具有全屏效果的窗口帧,这就是我想要的。在这个方法中,我存储旧的帧,以便在exitFullScreen方法中我可以将它们设置回原来的位置,但这不起作用。它没有任何效果。代码如下: NSView oldView, oldViewContainer; - (void) enterFullSc
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方法中添加代码来更改变量将非常占用处理器。现在,我将自定义视图放在旧视图上作为占位符,并在设置回旧尺寸时使用它们的框架,这非常有效,即使这不是最干净的东西。