And*_*ord 4 iphone objective-c ios iphone-x iphone-xs
我的一个应用程序连接到Web应用程序服务,该服务向用户提供特定于设备的新闻.为了适应最新的iPhone版本,我需要以编程方式区分iPhone XS和iPhone X.如何做到这一点?
[[UIScreen mainScreen] bounds].size总是一个很好的起点,告诉不同的设备分开.但是,iPhone XS和iPhone X具有相同的屏幕尺寸:1125 x 2436.因此[[UIScreen mainScreen] bounds].size在这种情况下使用不起作用.
还有其他方法可以检测最新的iPhone版本吗?
编辑: 这不是 "如何检测iPhone X"的问题的重复,因为那里讨论的所有答案/解决方案都使用屏幕尺寸来指定设备类型.如上所述,iPhone X和iPhone XS具有完全相同的尺寸,因此解决方案无法区分这两者......
小智 19
您可以确定使用UIScreen.main.nativeBounds.
if UIDevice().userInterfaceIdiom == .phone {
switch UIScreen.main.nativeBounds.height {
case 1136:
print("IPHONE 5,5S,5C")
case 1334:
print("IPHONE 6,7,8 IPHONE 6S,7S,8S ")
case 1920, 2208:
print("IPHONE 6PLUS, 6SPLUS, 7PLUS, 8PLUS")
case 2436:
print("IPHONE X, IPHONE XS")
case 2688:
print("IPHONE XS_MAX")
case 1792:
print("IPHONE XR")
default:
print("UNDETERMINED")
}
}
Run Code Online (Sandbox Code Playgroud)
.nativeBounds即使方向改变,也不会改变.
https://developer.apple.com/documentation/uikit/uiscreen/1617810-nativebounds
我使用DeviceUtil来确定iOS设备的型号.
根据这个DeviceUtil GitHub帖子,返回的UIDevice hardwareString值是:
iPhone11,2 = iPhone XS
iPhone11,4 = iPhone XS Max
iPhone11,8 = iPhone XR
Run Code Online (Sandbox Code Playgroud)
奇怪的是,Xcode 10 GM Simulator的[UIScreen mainScreen] .bounds.size为iPhone X,XS,XS Max和R设备返回375 x 812.我原本预计XS Max和XR会有414 x 896.
| 归档时间: |
|
| 查看次数: |
13437 次 |
| 最近记录: |