【问题标题】:Detect iphone 5 4" screen [duplicate]检测 iphone 5 4" 屏幕 [重复]
【发布时间】:2012-09-14 04:01:50
【问题描述】:

可能重复:
How to detect iPhone 5 (widescreen devices)?

有什么方法可以检测当前设备是否是 iphone 5?更具体地说,如果它使用的是新的 4" 屏幕?

【问题讨论】:

  • 你可以使用[[UIScreen mainScreen] bounds]对吗?
  • 如果他没有针对iPhone5屏幕进行优化,那么仍然会输出320x480
  • 你不应该有基于屏幕的不同视图。更多信息:stackoverflow.com/questions/12446990/…
  • 我不...只有 1 种情况我需要将 tableview 单元格调整为不同的屏幕高度...在它只是 ipad 和 iphone 之前,但现在我必须检测 ipohone 5 的高屏幕 :)
  • 它是重复的。我真的很喜欢这个问题的答案。

标签: iphone objective-c ios xcode


【解决方案1】:

我认为您应该专注于首选显示模式,而不是检测 iPhone5。谁知道 Apple 将制造什么设备,但如果您的软件支持该模式,它将是面向未来的。

BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));

将来,人们可能希望即时更改首选显示模式。例如,将 AppleTV 从 720p 电视断开并插入 1080p,当然无需重新启动应用程序。

【讨论】:

  • 确保您已将Default-568h@2x.png 设置为启动图像,否则它将不知道将新尺寸用作[UIScreen mainScreen]
  • @mkral 模式以像素为单位,而不是点数
  • 是的,我没有看到/知道这一点。测试它,你是对的。
  • 请注意,iOS 4.3 提供 UIScreen preferredMode。要在 iOS
  • @blejzz 询问的是iPhone 5,它预装了iOS 6。
【解决方案2】:

在您的初始化中添加此代码:

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
     if(UIScreenOverscanCompensationScale==1136/640){
             //move to your iphone5 storyboard
             [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
  }
     else{
             //move to your iphone4s storyboard
             [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
  }
}

这是我在另一个问题 here 中发布的答案。

【讨论】:

  • 上述方法迫使您创建两组单独的视图,为了保持一致性,这可能是一个真正的痛苦。如果您的 UI 变化不是很大,我真的建议您只测试屏幕的大小,然后以编程方式调整对象的大小并可能重新定位。
  • 这样做可以让您充分利用更大的屏幕,是的,您可以拉伸/收缩它,但这会起作用。 overscanCompensationScale if 语句也有效
  • 我绝对同意。只是指出,在两个设备上应该保持一致的自动调整 UI 元素现在必须使用上述方法创建两次。
【解决方案3】:

将此代码添加到您的应用程序中:

if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f)
    {// iPhone 5 code}
else
    {// previous version code}

【讨论】:

  • 您忘记添加如何获取 screenHeight ;-)
【解决方案4】:

使用这个

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多