2016-05-13 39 views
0

我想識別iPad視網膜是否有我的應用程序,然後改變我的代碼中的東西。直到現在,我從互聯網上有這個模型地圖,我也找到了iPad Pro。iPad Retina模型識別與快速

public enum Model : String { 
    case simulator = "simulator/sandbox", 
    iPod1   = "iPod 1", 
    iPod2   = "iPod 2", 
    iPod3   = "iPod 3", 
    iPod4   = "iPod 4", 
    iPod5   = "iPod 5", 
    iPad2   = "iPad 2", 
    iPad3   = "iPad 3", 
    iPad4   = "iPad 4", 
    iPhone4  = "iPhone 4", 
    iPhone4S  = "iPhone 4S", 
    iPhone5  = "iPhone 5", 
    iPhone5S  = "iPhone 5S", 
    iPhone5C  = "iPhone 5C", 
    iPadMini1  = "iPad Mini 1", 
    iPadMini2  = "iPad Mini 2", 
    iPadMini3  = "iPad Mini 3", 
    iPadAir1  = "iPad Air 1", 
    iPadAir2  = "iPad Air 2", 
    iPhone6  = "iPhone 6", 
    iPhone6plus = "iPhone 6 Plus", 
    iPhone6S  = "iPhone 6S", 
    iPhone6Splus = "iPhone 6S Plus", 
    iPadPro  = "iPad Pro", 
    iPadRetina  = "iPad Retina", 
    unrecognized = "?unrecognized?" 
} 

public extension UIDevice { 
    public var type: Model { 
     var systemInfo = utsname() 
     uname(&systemInfo) 
     let modelCode = withUnsafeMutablePointer(&systemInfo.machine) { 
      ptr in String.fromCString(UnsafePointer<CChar>(ptr)) 
     } 
     var modelMap : [ String : Model ] = [ 
      "i386"  : .simulator, 
      "x86_64" : .simulator, 
      "iPod1,1" : .iPod1, 
      "iPod2,1" : .iPod2, 
      "iPod3,1" : .iPod3, 
      "iPod4,1" : .iPod4, 
      "iPod5,1" : .iPod5, 
      "iPad2,1" : .iPad2, 
      "iPad2,2" : .iPad2, 
      "iPad2,3" : .iPad2, 
      "iPad2,4" : .iPad2, 
      "iPad2,5" : .iPadMini1, 
      "iPad2,6" : .iPadMini1, 
      "iPad2,7" : .iPadMini1, 
      "iPhone3,1" : .iPhone4, 
      "iPhone3,2" : .iPhone4, 
      "iPhone3,3" : .iPhone4, 
      "iPhone4,1" : .iPhone4S, 
      "iPhone5,1" : .iPhone5, 
      "iPhone5,2" : .iPhone5, 
      "iPhone5,3" : .iPhone5C, 
      "iPhone5,4" : .iPhone5C, 
      "iPad3,1" : .iPad3, 
      "iPad3,2" : .iPad3, 
      "iPad3,3" : .iPad3, 
      "iPad3,4" : .iPad4, 
      "iPad3,5" : .iPad4, 
      "iPad3,6" : .iPad4, 
      "iPhone6,1" : .iPhone5S, 
      "iPhone6,2" : .iPhone5S, 
      "iPad4,1" : .iPadAir1, 
      "iPad4,2" : .iPadAir2, 
      "iPad4,4" : .iPadMini2, 
      "iPad4,5" : .iPadMini2, 
      "iPad4,6" : .iPadMini2, 
      "iPad4,7" : .iPadMini3, 
      "iPad4,8" : .iPadMini3, 
      "iPad4,9" : .iPadMini3, 
      "iPhone7,1" : .iPhone6plus, 
      "iPhone7,2" : .iPhone6, 
      "iPhone8,1" : .iPhone6S, 
      "iPhone8,2" : .iPhone6Splus, 
      "iPad6,3" : .iPadPro, 
      "iPad6,4" : .iPadPro, 
      "iPad6,7" : .iPadPro, 
      "iPad6,8" : .iPadPro 
     ] 

     if let model = modelMap[String.fromCString(modelCode!)!] { 
      return model 
     } 
     return Model.unrecognized 
    } 
} 

而且我檢查出該用戶有這個簡單的情況下,撥碼開關的

switch UIDevice().type { 
       case .iPhone4S: 
        print("iphone4s") 
       case .iPhone5: 
        print("iphone5") 
case .iPadAir2: 
       print("mos def im an ipad air 2") 
     case .iPadPro: 
      print("am i an ipad Pro?") 
default: 
     print("i'm a pretty little simulator") 
} 

模型所以我的問題是所有這些 首先,因爲我沒有一個iPad臨,是代碼正確嗎? 最後,我該怎麼做,所以我可以認出ipad Retina?

非常感謝!

+0

您可以輕鬆搜索網頁以找出哪些模型是視網膜,哪些不是 –

+0

以下是一個重要問題:您爲什麼需要了解具體模型?這只是爲了獲取信息,或者您的應用程序的代碼是否根據模型做了不同的事情? – rmaddy

+0

順便說一句 - 你應該看到http://stackoverflow.com/questions/33493800/how-to-get-the-iphone-type-from-simulator-ios然後你可以在模擬器中測試你的代碼。 – rmaddy

回答

1

請不要自行編寫這些條件。使用此窗格可確定您的應用程序在哪個設備上運行,並且如果蘋果發佈了其他設備類型,則只需執行pod更新,剩下的操作將自行完成。 https://github.com/dennisweissmann/DeviceKit

+0

哦,我不知道!非常感謝 !! :d –