在Xcode 5.0.1(更新的xcode 6)中为3.5,4.0(更新的4.7和5.5)英寸屏幕开发相同的UI,没有风景,没有iPad,没有故事板

 潇湘V烟雨 发布于 2023-02-11 18:50

如果你想以编程方式检查它:

用于检查Retina(3.5/4英寸屏幕)或非视网膜

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
    }
  }
}

更新:

检查ios8或ios 7

print("screenType:", UIDevice.current.screenType.rawValue)

用于以编程方式检查所有视网膜iPhone:

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
}

还检查一下

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)
      }
 }

对于Swift 3.0

#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)

您还可以按如下方式扩展UIDevice:

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
    }
  }
}

编辑/更新 Xcode 8.1•Swift 3.0.1

print("screenType:", UIDevice.current.screenType.rawValue)

它可以帮到你.

快乐的编码.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有