iPad Pro设备检测

Mc.*_*ver 19 objective-c ipad ios

我正在尝试检测iPad Pro设备,试图用以下方法猜测它的高度:

NSLog(@"%f",self.view.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

但它又回来了1024!与iPad非视网膜设备相同.任何建议?

我需要使用以下代码行为iPad Pro指定一些代码:

#define iPadPro ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad && [UIScreen mainScreen].bounds.size.height == 2732)
Run Code Online (Sandbox Code Playgroud)

...即使在iOS模拟器上,代码也必须检测iPad Pro!

谢谢

编辑:有人建议使用LunchScreen,但是当我使用它时,会发生这种情况(按比例缩小): 在此输入图像描述

Mc.*_*ver 15

特别感谢@rmaddy

检测屏幕尺寸的正确方法是:

NSLog(@"%f",[UIScreen mainScreen].bounds.size.height);
Run Code Online (Sandbox Code Playgroud)

现在,如果您的应用程序以Portrait模式运行,您只需使用此代码来检测iPad Pro:

#define iPadPro ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad && [UIScreen mainScreen].bounds.size.height == 1366)
Run Code Online (Sandbox Code Playgroud)

不要忘记使用LaunchScreen的需要,否则应用程序将无法利用iPad Pro的大屏幕

  • 不要忘记使用LaunchScreen的需要,否则应用程序将无法利用iPad Pro的大屏幕. (4认同)

Hom*_*mam 8

检测iPad pro 12.9英寸无论设备的方向

#define iPadPro12 (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad && UIScreen.mainScreen.nativeBounds.size.height == 2732) 
Run Code Online (Sandbox Code Playgroud)


Gro*_*oot 5

这是一个无论设备方向如何都可以使用的检查:

- (BOOL)isIpadPro
{
    UIScreen *mainScreen = [UIScreen mainScreen];
    CGFloat width = mainScreen.nativeBounds.size.width / mainScreen.nativeScale;
    CGFloat height = mainScreen.nativeBounds.size.height / mainScreen.nativeScale;
    BOOL isIpad = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad;
    BOOL hasIPadProWidth = fabs(width - 1024.f) < DBL_EPSILON;
    BOOL hasIPadProHeight = fabs(height - 1366.f) < DBL_EPSILON;
    return isIpad && hasIPadProHeight && hasIPadProWidth;
}
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于iOS8 +


D1m*_*s0n 5

感谢@ Mc.Lover

两者PortraitLandscape方向的一点点更新:

if (([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad && ([UIScreen mainScreen].bounds.size.height == 1366 || [UIScreen mainScreen].bounds.size.width == 1366))) {
//iPad Pro
}
Run Code Online (Sandbox Code Playgroud)


MAN*_*HAK 5

Swift 3+的固定解决方案

有两种解决方案,第一种是我在项目中使用过的,你可以使用其中任何一种.

1-使用宏

2-使用扩展

使用宏

#define iPadPro129 (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad && 
                                  UIScreen.mainScreen.nativeBounds.size.height == 2732) 

#define iPadPro105 (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad && 
                                  UIScreen.mainScreen.nativeBounds.size.height == 2224) 
Run Code Online (Sandbox Code Playgroud)

使用扩展

extension UIDevice {

    // for ipad pro 12.9 device
     public var isPadPro129: Bool {
         if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad 
             && UIScreen.main.nativeBounds.size.height == 2732) {
              return true
         }
         return false
     }



  // for ipad pro 10.5 device
     public var isPadPro105: Bool {
         if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad 
             && UIScreen.main. nativeBounds.size.height == 2224) {
              return true
         }
         return false
     }

}
Run Code Online (Sandbox Code Playgroud)