Different Device Orientation according to device (iPhone or iPad)

后端 未结 2 2026
[愿得一人]
[愿得一人] 2020-12-30 06:28

I\'m working on a Universal project with these requirements:

  • For iPhone, I want only the portrait orientation.
  • For iPad, only landscapes.
相关标签:
2条回答
  • 2020-12-30 06:56

    My suggestion is to check the hardware your application is running on. To do so, use this line of code.

    if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    

    Then, once you have detected your hardware, block the orientation by using the shouldAutorotateToInterfaceOrientation:

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
    {
        return UIInterfaceOrientationIsLandscape(orientation);
    }
    

    Just as an example, you could do this

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
        {
            if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) 
                return UIInterfaceOrientationIsLandscape(orientation); // If iPad
            else
                return UIInterfaceOrientationIsPortrait(orientation); // Else, it is an iPhone
        }
    
    0 讨论(0)
  • 2020-12-30 07:04

    Following the advice of @ScarletMerlin , changing the keys in info.plist is, in my opinion, the best solution for the requirements I have to fulfill (fixed orientation type for each kind of device).

    Here is a print screen from the settings I use. Maybe it can help other developers with similar doubt.

    Settings in info.plist file

    The relavent source code looks like this:

    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    
    0 讨论(0)
提交回复
热议问题