I have no idea why this code isn’t working, but hopefully the fix is simple, I hope someone can help.
I have 2 functions, enterFullScreen and exitFullScreen.
In the enterFullScreen method, I set an NSView’s frame to the Window’s frame, which has a full-screen effect, this is what I want. Within this method I store the old frames so that in the exitFullScreen method I can set them back, but this isn’t working. It has no effect whatsoever. The code is as follows:
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]];
}
The enter fullscreen method works exactly as expected, but for some reason I can’t set the 2 Views back to their original size/location.
I don’t know if it’s because I can’t just store the whole view, or if the origin is causing problems?
I’ve tried every combination, if somebody could help I’d be really grateful.
Thanks in advance.
You don’t want to set oldView to newView, that makes them the same view, so when you resize newView to full screen, oldView’s frame also is set to full screen. You want to save the old frame, not the view, so:
oldFrame = newView.frame; (to store the original frame)
then when you resize smaller,
[newView setFrame:oldFrame];