如何以编程方式区分 iPhone 和 iPhone(Retina 3.5 英寸)? [复制]

Posted

技术标签:

【中文标题】如何以编程方式区分 iPhone 和 iPhone(Retina 3.5 英寸)? [复制]【英文标题】:How to distinguish between iPhone and iPhone (Retina 3.5 inch) Programmatically? [duplicate] 【发布时间】:2013-09-17 05:14:15 【问题描述】:

通过检查设备的高度很容易检查设备是 iPhone 5 还是 iPhone,如下所示

if([UIScreen mainScreen].bounds.size.height == 568)
    // iPhone 5
 else
    // Regular iPhone

但是,我想知道,在进入 else body 480 height 后,我想检查它的 iPhone 还是 iPhone 视网膜?

怎么做?

我的主要目标是设置导航,正如我在另一个问题中给出的那样

ios XIB

谢谢

【问题讨论】:

你说“iPhone”是什么意思? 您要解决的最终问题是什么?你是想表达你的观点吗?您应该能够使用自动布局或弹簧和支柱来处理它。您是否尝试加载不同的图像资产? iOS 会为您处理这些细节。您是否正在尝试做其他事情? @BergQuester,亲爱的,我被困在 iOS 不同的 xib 和屏幕上。你以前指导过我,但也通过使用 AutoSize,我无法为 iPhone4 和 iPhone5 以及没有 ratina 的 iPhone 制作相同的 xib。 @BergQuester,你能看到你回答的老问题吗?这是链接***.com/questions/17938427/… 啊,是的,我现在想起来了。为所有 iPhone 使用相同的 xib 非常容易。只需按照人们在另一个问题中告诉您的内容进行操作即可。通过为三种不同的手机型号提供三种不同的 xib,您只会为自己创造更多的工作,并使维护您的应用程序变得更加困难。 【参考方案1】:

如果你真的需要这个,你可以使用这样的东西:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
    if ([[UIScreen mainScreen] scale] >= 2.0) 
        // retina
    
    else 
        // not retina
    

【讨论】:

【参考方案2】:

如下在pch文件中定义为宏

#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))

【讨论】:

【参考方案3】:

我猜你必须检查屏幕是否响应scale消息,它的值是2.0

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
    && 
    [[UIScreen mainScreen] scale] == 2.0) 

    //Retina
 
else 

    //Not Retina

【讨论】:

【参考方案4】:

使用这个方法..

返回 YES 表示它的视网膜,否则非视网膜,

+(BOOL)iPhoneRetina

    return ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) ;

【讨论】:

以上是关于如何以编程方式区分 iPhone 和 iPhone(Retina 3.5 英寸)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在iphone中以编程方式实现带有背景图像的按钮

如何以编程方式为 iPhone 和 iPad 播放闹钟?

如何以编程方式识别iphone(3g,4s,5)版本[重复]

如何以编程方式捕获 iPhone 控制台日志? [关闭]

如何以编程方式设置 UITableView 部分标题(iPhone/iPad)?

如何以编程方式检测 iPhone 6 和 6 Plus 视图模式 [重复]