有没有人知道以下代码的替代方法?我想在我的应用程序中支持iOS 7及更低版本.nativeScale不适用于这些固件。我无法在互联网上找到解决方案,这就是我在这里问的原因。 (通常让屏幕边框检查568的高度对iPhone 6 +不起作用)
“守则”指的是:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if ([UIScreen mainScreen].nativeScale > 2.1) {
//6 plus
} else if (screenBounds.size.height == 568) {
//4 inch / iPhone 6 code
} else {
//3.5 inch code
}
提前致谢
答案 0 :(得分:4)
所以我做的是: 首先,我按以下顺序获得了这些方法:
if ([UIScreen mainScreen].nativeScale > 2.1) {
//6 plus
} else if (screenBounds.size.height == 568) {
//4 inch code
} else {
//3.5 inch code
}
然后我想,既然计算机在找到真正的声明后停止运行if else
语句,我只需将顺序重新排列为以下内容:
if (screenBounds.size.height == 480) {
//3.5 inch code
} else if ([UIScreen mainScreen].nativeScale > 2.1) {
//6 plus
} else if (screenBounds.size.height == 568) {
//4 inch code
}
这支持iOS 4或更低版本的iPhone 4S。在iPhone 5 / 5S上它仍会崩溃。这就是我最终将其改为以下内容的原因:
if ([[UIScreen mainScreen] respondsToSelector:@selector(nativeScale)]) {
//checks if device is running on iOS 8, skips if not
NSLog(@"iOS 8 device");
if (screenBounds.size.height == 480) {
//3.5 inch code
NSLog(@"iPhone 4S detected");
} else if ([UIScreen mainScreen].nativeScale > 2.1) {
//6 plus
NSLog(@"iPhone 6 plus detected");
} else if (screenBounds.size.height == 568) {
//4 inch code
NSLog(@"iPhone 5 / 5S / 6 detected");
}
} else if (screenBounds.size.height == 480) {
//checks if device is tunning iOS 7 or below if not iOS 8
NSLog(@"iOS 7- device");
NSLog(@"iPhone 4S detected");
//3.5 inch code
} else if (screenBounds.size.height == 568) {
NSLog(@"iOS 7- device");
NSLog(@"iPhone 5 / 5S / 6 detected");
//4 inch code
}
它现在应该可以在任何iOS 7和iOS 8设备上完全运行!