How can I disable landscape orientation?

后端 未结 9 2134
忘掉有多难
忘掉有多难 2020-12-02 22:53

I am making an iPhone app and I need it to be in portrait mode, so if the user moves the device sideways, it does not automatically rotate. How can I do this?

9条回答
  •  無奈伤痛
    2020-12-02 23:28

    To disable orientations for a particular View Controller, you should now override supportedInterfaceOrientations and preferredInterfaceOrientationForPresentation.

    - (NSUInteger) supportedInterfaceOrientations {
        // Return a bitmask of supported orientations. If you need more,
        // use bitwise or (see the commented return).
        return UIInterfaceOrientationMaskPortrait;
        // return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
    }
    
    - (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
        // Return the orientation you'd prefer - this is what it launches to. The
        // user can still rotate. You don't have to implement this method, in which
        // case it launches in the current orientation
        return UIInterfaceOrientationPortrait;
    }
    

    If you're targeting something older than iOS 6, you want the shouldAutorotateToInterfaceOrientation: method. By changing when it returns yes, you'll determine if it will rotate to said orientation. This will only allow the normal portrait orientation.

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        // Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    
        // Use this to allow upside down as well
        //return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
    }
    

    Note that shouldAutorotateToInterfaceOrientation: has been deprecated in iOS 6.0.

提交回复
热议问题