Resize view on iPhone when rotating

12,185

Unless you have a very basic app that stretches to match the orientation, auto-resizing is not going to work well for you anyways - you really need to create two separate views for the two orientations.

For help on autoresizing views, you can check this tutorial:

http://theappleblog.com/2009/04/08/iphone-dev-sessions-how-to-make-an-orientation-aware-clock/

To use the more robust method of switching views, this tutorial should help you out:

http://icodeblog.com/2008/08/03/iphone-programming-tutorial-transitioning-between-views/

Share:
12,185
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    I have an application with many views. I want only a couple of the views to be able to rotate to landscape when the device is rotated. I found out that I couldn't use (BOOL)shouldAutorotateToInterfaceOrientation because that would rotate every view in my app. I found a solution to this problem here on Stack Overflow but now I have another issue to deal with.

    The view rotates when I turn the device but it still shows the view as if it were still in portrait mode (straight up and down). The top and bottom of the view is cut off. Is there a way to have the view rotate and also adjust its size to fit the new orientation? I also found this but wasn't able to get it to work.

    Here's my code for that view:

    @implementation businessBank
    @synthesize webView, activityIndicator;
    
    
    - (void)viewDidLoad {
    
        [super viewDidLoad];
        NSString *urlAddress = @"website_url";
    
        NSURL *url = [NSURL URLWithString:urlAddress];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    
        [webView loadRequest:requestObj];
        [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(didRotate:)
                                                     name:UIDeviceOrientationDidChangeNotification
                                                   object:nil];
    
    }
    - (void)didRotate:(NSNotification *)notification {
    
        UIDeviceOrientation orientation = [[notification object] orientation];
    
        if (orientation == UIDeviceOrientationLandscapeLeft) {
            [self.view setTransform:CGAffineTransformMakeRotation(M_PI / 2.0)];
        } else if (orientation == UIDeviceOrientationLandscapeRight) {
            [self.view setTransform:CGAffineTransformMakeRotation(M_PI / -2.0)];
        } else if (orientation == UIDeviceOrientationPortraitUpsideDown) {
            [self.view setTransform:CGAffineTransformMakeRotation(M_PI)];
        } else if (orientation == UIDeviceOrientationPortrait) {
            [self.view setTransform:CGAffineTransformMakeRotation(0.0)];
        }
    }