- 我开发的应用程序考虑的是 3.5 英寸的 .xib 文件,而不是 Storyboard。
- 我找不到任何教程或指南可以帮助我设计适用于所有屏幕的类似应用。
- 我使用的是 Xcode 5.0.1
- 我只开发没有自动布局的普通应用程序,并且仅适用于 iOS 6 和 iOS 7 (iPhone)。
下面是屏幕截图,它在不同屏幕上的差异。
A. iPhone iOS 6 模拟器:
B. 3.5 英寸(Ios 6 和 Ios 7) C.4.0 英寸(Ios 6 和 Ios 7)
更新: 请更新以下答案以了解 4.7 和 5.5 英寸屏幕。
最佳答案
如果您想以编程方式检查它:
对于 swift
extension UIDevice {
var iPhoneX: Bool {
return UIScreen.main.nativeBounds.height == 2436
}
var iPhone: Bool {
return UIDevice.current.userInterfaceIdiom == .phone
}
enum ScreenType: String {
case iPhone4_4S = "iPhone 4 or iPhone 4S"
case iPhones_5_5s_5c_SE = "iPhone 5, iPhone 5s, iPhone 5c or iPhone SE"
case iPhones_6_6s_7_8 = "iPhone 6, iPhone 6S, iPhone 7 or iPhone 8"
case iPhones_6Plus_6sPlus_7Plus_8Plus = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus"
case iPhoneXR = "iPhone XR"
case iPhoneX_iPhoneXS = "iPhone X,iPhoneXS"
case iPhoneXSMax = "iPhoneXS Max"
case unknown
}
var screenType: ScreenType {
switch UIScreen.main.nativeBounds.height {
case 960:
return .iPhone4_4S
case 1136:
return .iPhones_5_5s_5c_SE
case 1334:
return .iPhones_6_6s_7_8
case 1792:
return .iPhoneXR
case 1920, 2208:
return .iPhones_6Plus_6sPlus_7Plus_8Plus
case 2436:
return .iPhoneX_iPhoneXS
case 2688:
return .iPhoneXSMax
default:
return .unknown
}
}
}
您可以检查如下:
print("screenType:", UIDevice.current.screenType.rawValue)
用于检查视网膜(3.5/4 英寸屏幕)或非视网膜
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
if ([[UIScreen mainScreen] scale] == 2.0) {
if([UIScreen mainScreen].bounds.size.height == 568){
// iPhone retina-4 inch
} else{
// iPhone retina-3.5 inch
}
}
else {
// not retina display
}
更新:
用于以编程方式检查所有视网膜 iPhone:
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
if ([[UIScreen mainScreen] scale] == 2.0) {
if([UIScreen mainScreen].bounds.size.height == 667){
// iPhone retina-4.7 inch(iPhone 6)
}
else if([UIScreen mainScreen].bounds.size.height == 568){
// iPhone retina-4 inch(iPhone 5 or 5s)
}
else{
// iPhone retina-3.5 inch(iPhone 4s)
}
}
else if ([[UIScreen mainScreen] scale] == 3.0)
{
//if you want to detect the iPhone 6+ only
if([UIScreen mainScreen].bounds.size.height == 736.0){
//iPhone retina-5.5 inch screen(iPhone 6 plus)
}
//iPhone retina-5.5 inch screen(iPhone 6 plus)
}
}
另请检查此
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0)
#define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0)
#define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
希望对你有帮助。
祝你编码愉快。
关于iphone - 在 Xcode 5.0.1(更新的 Xcode 6)中为 3.5、4.0(更新的 4.7 和 5.5)英寸屏幕开发相同的 UI,无横向、无 iPad 和 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20489964/