首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在swift中程序化查看iphone 4和iphone 5的屏幕尺寸

如何在swift中程序化查看iphone 4和iphone 5的屏幕尺寸
EN

Stack Overflow用户
提问于 2015-01-05 16:28:57
回答 13查看 58K关注 0票数 59

我需要把这个Objective-C替换成Swift。有没有人有关于如何转移它的建议?

代码语言:javascript
复制
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}
EN

回答 13

Stack Overflow用户

发布于 2015-01-05 17:33:04

Xcode 12.4·Swift 5.3或更高版本的

代码语言:javascript
复制
extension UIDevice {
    var iPhoneX: Bool { UIScreen.main.nativeBounds.height == 2436 }
    var iPhone: Bool { UIDevice.current.userInterfaceIdiom == .phone }
    var iPad: Bool { UIDevice().userInterfaceIdiom == .pad }
    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_6Plus_6sPlus_7Plus_8Plus_Simulators = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus Simulators"
        case iPhones_X_XS_12MiniSimulator = "iPhone X or iPhone XS or iPhone 12 Mini Simulator"
        case iPhone_XR_11 = "iPhone XR or iPhone 11"
        case iPhone_XSMax_ProMax = "iPhone XS Max or iPhone Pro Max"
        case iPhone_11Pro = "iPhone 11 Pro"
        case iPhone_12Mini = "iPhone 12 Mini"
        case iPhone_12_12Pro = "iPhone 12 or iPhone 12 Pro"
        case iPhone_12ProMax = "iPhone 12 Pro Max"
        case unknown
    }
    var screenType: ScreenType {
        switch UIScreen.main.nativeBounds.height {
        case 1136: return .iPhones_5_5s_5c_SE
        case 1334: return .iPhones_6_6s_7_8
        case 1792: return .iPhone_XR_11
        case 1920: return .iPhones_6Plus_6sPlus_7Plus_8Plus
        case 2208: return .iPhones_6Plus_6sPlus_7Plus_8Plus_Simulators
        case 2340: return .iPhone_12Mini
        case 2426: return .iPhone_11Pro
        case 2436: return .iPhones_X_XS_12MiniSimulator
        case 2532: return .iPhone_12_12Pro
        case 2688: return .iPhone_XSMax_ProMax
        case 2778: return .iPhone_12ProMax
        default: return .unknown
        }
    }
}

代码语言:javascript
复制
print("screenType:", UIDevice.current.screenType)
票数 175
EN

Stack Overflow用户

发布于 2015-11-27 16:19:47

使用UIScreen扩展( iOS 8及更高版本)的替代解决方案:

代码语言:javascript
复制
extension UIScreen {

    enum SizeType: CGFloat {
        case Unknown = 0.0
        case iPhone4 = 960.0
        case iPhone5 = 1136.0
        case iPhone6 = 1334.0
        case iPhone6Plus = 1920.0
    }

    var sizeType: SizeType {
        let height = nativeBounds.height
        guard let sizeType = SizeType(rawValue: height) else { return .Unknown }
        return sizeType
    }
}

用法:

代码语言:javascript
复制
if UIScreen.mainScreen().sizeType == .iPhone4 {
    // Make specific layout for small devices.
}
票数 27
EN

Stack Overflow用户

发布于 2016-05-25 21:55:20

代码语言:javascript
复制
if UIDevice().userInterfaceIdiom == .Phone {
    switch UIScreen.mainScreen().bounds.size.height{
    case 480:
        print("iPhone 4S")
    case 568:
        print("iPhone 5")
    default:
        print("other models")
    }
}

UIScreen.mainScreen().bounds.size.height将提供设备的高度。通过使用这个值,我们可以检查特定的iphone设备。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27775779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档