supportedInterfaceOrientations调用除6+以外的所有iPhone

时间:2015-10-02 01:02:01

标签: ios objective-c swift uikit iphone-6-plus

在我的iPhone应用程序上,我仅限于项目目标部署信息

下的肖像

我只想在横向上有一个页面,我使用supportedInterfaceOrientations方法来获取它。

标准实施:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.Landscape
    }

除iPhone 6+外,它适用于所有iPhone设备和iOS版本。从不调用supportedInterfaceOrientations方法。

我无法找到任何可能影响iPhone 6+的原因,任何提示都会受到极大的影响。

2 个答案:

答案 0 :(得分:3)

你可以试试这个适合我的代码

// you have to import foundation
import Foundation

class YourViewController : UIViewController {
    var device = self.platform()

     override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(true)

     if device.lowercaseString.rangeOfString("iphone6plus") != nil {
     supportedInterfaceOrientations()
    }

    }

    // add this method to your view controller
    func platform() -> String {
            var sysinfo = utsname()
            uname(&sysinfo) // ignore return value
            return NSString(bytes: &sysinfo.machine, length: Int(_SYS_NAMELEN), encoding:
                NSASCIIStringEncoding)! as String
        }

请注意,这不会在模拟器上运行,但会在实际设备上完美运行。

答案 1 :(得分:-1)

查看this question,请尝试以下代码段:

- (NSUInteger) supportedInterfaceOrientations
{
  if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
  {
    // iPhone 5S and below: 320x480
    // iPhone 6: 375x667
    // iPhone 6 Plus: 414x736
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    // The way how UIScreen reports its bounds has changed in iOS 8.
    // Using MIN() and MAX() makes this code work for all iOS versions.
    CGFloat smallerDimension = MIN(screenSize.width, screenSize.height);
    CGFloat largerDimension = MAX(screenSize.width, screenSize.height);
    if (smallerDimension >= 400 && largerDimension >= 700)
      return UIInterfaceOrientationMask.Landscape;
    else
      return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
  }
  else
  {
    // Don't need to examine screen dimensions on iPad
    return UIInterfaceOrientationMask.Landscape;
  }
}

-Herzbube

  

缺少正式的Apple API,这是我提出的解决方法:

     

[代码]

     

该片段简单地假设尺寸高于半任意选择尺寸的屏幕适合旋转。半随意,因为400x700的门槛包括iPhone 6 Plus,但不包括iPhone 6。

     

虽然这个解决方案相当简单,但我完全喜欢它,因为它缺乏复杂性。我并不需要准确区分设备,所以任何聪明的解决方案(例如Jef's answer中的解决方案对我来说都是过度的。

我所做的只是将第一和第三个返回值从UIInterfaceOrientationMaskAll更改为UIInterfaceOrientationMask.Landscape