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!
谢谢
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的大屏幕
检测iPad pro 12.9英寸无论设备的方向
#define iPadPro12 (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad && UIScreen.mainScreen.nativeBounds.size.height == 2732)
Run Code Online (Sandbox Code Playgroud)
这是一个无论设备方向如何都可以使用的检查:
- (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 +
感谢@ Mc.Lover
两者Portrait
和Landscape
方向的一点点更新:
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)
有两种解决方案,第一种是我在项目中使用过的,你可以使用其中任何一种.
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)
归档时间: |
|
查看次数: |
14740 次 |
最近记录: |