Search code examples
iphonexcode8iphone-x

Detecting latest apple devices Xs, X(R)


I need to detect latest iphone devices programatically. I have all the device identifiers for previous models but i need the device identifiers for iPhone Xs max ,iPhone Xs, iPhone X(R).


Solution

  • For XCode 9 and Swift 4

    extension UIDevice {
        var iPhoneX: Bool {
            return UIScreen.main.nativeBounds.height == 2436
        }
        var iPhone: Bool {
            return UIDevice.current.userInterfaceIdiom == .phone
        }
        enum ScreenType: String {
            case iPhones_4_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 iPhones_X_XS = "iPhone X or iPhone XS"
            case iPhone_XR = "iPhone XR"
            case iPhone_XSMax = "iPhone XS Max"
            case unknown
        }
        var screenType: ScreenType {
            switch UIScreen.main.nativeBounds.height {
            case 960:
                return .iPhones_4_4S
            case 1136:
                return .iPhones_5_5s_5c_SE
            case 1334:
                return .iPhones_6_6s_7_8
            case 1792:
                return .iPhone_XR
            case 1920, 2208:
                return .iPhones_6Plus_6sPlus_7Plus_8Plus
            case 2436:
                return .iPhones_X_XS
            case 2688:
                return .iPhone_XSMax
            default:
                return .unknown
            }
        }
    }
    

    And use this simply:

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

    Also can visit this for knowing about iPhone devices screen resolution.

    https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions