ios/swift之尺寸和机型判断

import UIKit

let WIDTH = UIScreen.main.bounds.size.width

let HEIGHT = UIScreen.main.bounds.size.height

 

/**

机型的屏幕大小一

*/

// 判断 iPad

let Device_Is_iPad = (UIDevice().userInterfaceIdiom == UIUserInterfaceIdiom.pad)

// 判断iPhone X

let Device_Is_iPhoneX=__CGSizeEqualToSize(CGSize.init(width: 1125/3, height: 2436/3), UIScreen.main.bounds.size)

//判断iPHoneXr | 11

let Device_Is_iPhoneXr=__CGSizeEqualToSize(CGSize.init(width: 828/2, height: 1792/2), UIScreen.main.bounds.size)

//判断iPHoneXs | 11Pro

let Device_Is_iPhoneXs=__CGSizeEqualToSize(CGSize.init(width: 1125/3, height: 2436/3), UIScreen.main.bounds.size)

//判断iPhoneXs Max | 11ProMax

let Device_Is_iPhoneXs_Max=__CGSizeEqualToSize(CGSize.init(width: 1242/3, height: 2688/3), UIScreen.main.bounds.size)

 

let Device_Is_iphoneX_All = (Device_Is_iPhoneX || Device_Is_iPhoneXr || Device_Is_iPhoneXs||Device_Is_iPhoneXs_Max)

 

//判断iPhone12_Mini

let Device_Is_iPhone12_Mini=__CGSizeEqualToSize(CGSize.init(width: 1080/3, height: 2340/3), UIScreen.main.bounds.size)

//判断iPhone12 | 12Pro

let Device_Is_iPhone12=__CGSizeEqualToSize(CGSize.init(width: 1170/3, height: 2532/3), UIScreen.main.bounds.size)

//判断iPhone12 Pro Max

let Device_Is_iPhone12_ProMax=__CGSizeEqualToSize(CGSize.init(width: 1284/3, height: 2778/3), UIScreen.main.bounds.size)

//x系列,包含x、11、12

let Device_Is_iPhone_All=(Device_Is_iphoneX_All||Device_Is_iPhone12_Mini||Device_Is_iPhone12||Device_Is_iPhone12_ProMax)

 

/**

状态栏高度

*/

let StateBarHigh = Device_Is_iPhone_All ? 44:20

/**

顶部状态栏+导航高度

*/

let TopSpaceHigh = Device_Is_iPhone_All ? 88:64

/**

底部安全区域的高度

*/

let  bottomSafeHeight = Device_Is_iPhone_All ? 34:0

/**

底部区域

*/

let  bottomHeight = Device_Is_iPhone_All ? 83:49

 

机型判断二

// iPhoneX

let iPhoneX:Bool = __CGSizeEqualToSize(CGSize(width: 1125, height: 2436), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

// iPhoneXR| 11

let iPhoneXR:Bool = __CGSizeEqualToSize(CGSize(width: 828, height: 1792), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

//判断iPHoneXs | 11Pro

let iPhoneXs:Bool = __CGSizeEqualToSize(CGSize(width: 1125, height: 2436), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

// iPhoneXSMAX| 11ProMax

let iPhoneXSMAX:Bool = __CGSizeEqualToSize(CGSize(width: 1242, height: 2688), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

 

// 判断是否是X系列的

let isIPhoneX_All:Bool = iPhoneX||iPhoneXR||iPhoneXs||iPhoneXSMAX ;

//判断iPhone12_Mini

let iPhone12Mini:Bool = __CGSizeEqualToSize(CGSize(width: 1080, height: 2340), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

//判断iPhone12 | 12Pro

let iPhone12:Bool = __CGSizeEqualToSize(CGSize(width: 1170, height: 2532), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

//判断iPhone12 Pro Max

let iPhone12ProMax:Bool = __CGSizeEqualToSize(CGSize(width: 1284, height: 2778), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0));

//x系列,包含x、11、12

let isIPhone_All=(isIPhoneX_All||iPhone12Mini||iPhone12||iPhone12ProMax)

 

机型判断三

调用:UIDevice.init().modelName

/// 扩展UIDevice
extension UIDevice {
    
    /// 获取设备具体详细的型号
    var modelName: String {
        
        var systemInfo = utsname()
        uname(&systemInfo)
        
        let machineMirror = Mirror(reflecting: systemInfo.machine)
        let identifier = machineMirror.children.reduce("") { identifier, element in
            guard let value = element.value as? Int8, value != 0 else {return identifier}
            
            return identifier + String(UnicodeScalar(UInt8(value)))
        }
        
        switch identifier {
        case "iPod1,1":
            return "iPod Touch 1G"
        case "iPod2,1":
            return "iPod Touch 2G"
        case "iPod3,1":
            return "iPod Touch 3G"
        case "iPod4,1":
            return "iPod Touch 4G"
        case "iPod5,1":
            return "iPod Touch 5G"
        case "iPod7,1":
            return "iPod Touch 6G"
            
        case "iPhone1,1":
            return "iPhone 2G"
        case "iPhone1,2":
            return "iPhone 3G"
        case "iPhone2,1":
            return "iPhone 3GS"
        case "iPhone3,1", "iPhone3,2", "iPhone3,3":
            return "iPhone 4"
        case "iPhone4,1":
            return "iPhone 4s"
            
        case "iPhone5,1":
            return "iPhone 5"
        case "iPhone5,2":
            return "iPhone 5 (GSM+CDMA)"
        case "iPhone5,3":
            return "iPhone 5c (GSM)"
        case "iPhone5,4":
            return "iPhone 5c (GSM+CDMA)"
            
        case "iPhone6,1":
            return "iPhone 5s (GSM)"
        case "iPhone6,2":
            return "iPhone 5s (GSM+CDMA)"
            
        case "iPhone7,2":
            return "iPhone 6"
        case "iPhone7,1":
            return "iPhone 6 Plus"
        case "iPhone8,1":
            return "iPhone 6s"
        case "iPhone8,2":
            return "iPhone 6s Plus"
            
        case "iPhone8,4":
            return "iPhone SE"
            /// "国行、日版、港行iPhone 7"
        case "iPhone9,1":
            return "iPhone 7"
            /// "港行、国行iPhone 7 Plus"
        case "iPhone9,2":
            return "iPhone 7 Plus"
            /// "美版、台版iPhone 7"
        case "iPhone9,3":
            return "iPhone 7"
            /// "美版、台版iPhone 7 Plus"
        case "iPhone9,4":
            return "iPhone 7 Plus"
            
        case "iPhone10,1":
            return "iPhone 8"
        case "iPhone10,4":
            return "iPhone 8"
        case "iPhone10,2":
            return "iPhone 8 Plus"
        case "iPhone10,5":
            return "iPhone 8 Plus"
            
        case "iPhone10,3":
            return "iPhone X"
        case "iPhone10,6":
            return "iPhone X"
            
        case "iPhone11,2":
            return "iPhone XS"
        case "iPhone11,4", "iPhone11,6":
            return "iPhone XS Max"
        case "iPhone11,8":
            return "iPhone XR"

        case "iPhone12,1":
            return "iPhone 11"
        case "iPhone12,3":
            return "iPhone 11 Pro"
        case "iPhone12,5":
            return "iPhone 11 Pro Max"
    
            
        case "iPhone13,1":
            return "iPhone 12 mini"
        case "iPhone13,2":
            return "iPhone 12"
        case "iPhone13,3":
            return "iPhone 12  Pro"
        case "iPhone13,4":
            return "iPhone 12  Pro Max"
            
        case "iPad1,1":
            return "iPod Touch 1G"
        case "iPad1,2":
            return "iPad 3G"
        case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":
            return "iPod Touch 2G"
        case "iPad2,5", "iPad2,6", "iPad2,7":
            return "iPad Mini 1G"
        case "iPad3,1", "iPad3,2", "iPad3,3":
            return "iPad 3"
        case "iPad3,4", "iPad3,5", "iPad3,6":
            return "iPad 4"
        case "iPad4,1", "iPad4,2", "iPad4,3":
            return "iPad Air"
        case "iPad4,4", "iPad4,5", "iPad4,6":
            return "iPad Mini 2"
        case "iPad4,7", "iPad4,8", "iPad4,9":
            return "iPad Mini 3"
        case "iPad5,1", "iPad5,2":
            return "iPad Mini 4"
        case "iPad5,3", "iPad5,4":
            return "iPad Air 2"
        case "iPad6,3", "iPad6,4":
            return "iPad Pro 9.7"
        case "iPad6,7", "iPad6,8":
            return "iPad Pro 12.9"
            
        case "AppleTV2,1":
            return "Apple TV 2"
        case "AppleTV3,1", "AppleTV3,2":
            return "Apple TV 3"
        case "AppleTV5,3":
            return "Apple TV 4"
            
        case "i386", "x86_64":
            return "iPhone 11 Pro"
            
        default:
            return "iPhone"
        }
    }
    
}

 

手机机型(iPhone)屏幕尺寸(inch)逻辑分辨率(pt)设备分辨率(px)缩放因子 (Scale Factor)像素密度(ppi)
5(s/se)4320×568640×1136@2x326
6(s)/7/8/se24.7375×667750×1334@2x326
6 Plus/7 Plus/8 Plus5.5414×7361242×2208@3x401
X/XS/11 Pro5.8375×8121125×2436@3x458
XR/116.1414×896828×1792@2x326
XS Max/11 Pro Max6.5414×8961242×2688@3x458
12 mini5.4375×8121080×2340@3x467
12/12 Pro6.1390×8441170×2532@3x460
12 Pro Max6.7428×9261284×2778@3x458
iPhone型号状态栏状态栏导航栏导航栏tabBartabBar
iPhone型号竖屏横屏竖屏横屏竖屏横屏
5s/SE/6/6s/7/8(iOS10)20044324949
5s/SE/SE2/6/6s/7/8(iOS11+)20044324932
6 Plus/7 Plus/8 Plus20044444949
X/XS/11 Pro440443283(49+34)53(32+21)
XS Max/11 Pro Max440444483(49+34)70(49+21)
11/XR440444483(49+34)70(49+21)
11/XR(iOS 14+)480444483(49+34)70(49+21)
12/12 Pro/47044328353
12 Pro Max47044448370
12 mini44044328353

1.导航栏:竖屏都是44像素,横屏max机型都是44(同竖屏),非max为32;
2.Tabbar:竖屏都是49像素,全屏手机需加上34的安全距离。横屏max机型是49(同竖屏)非max机型是32,全屏需加上21的安全距离;
3.通过模拟器测试,全面屏横屏无法通过(prefersStatusBarHidden)显示状态栏。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值