如何检测设备是否为 iPhone 5?

18

可能是重复问题:
如何检测iPhone 5(宽屏设备)?

我正在尝试在现有的iOS4项目中添加一个新视图以处理新的iPhone5屏幕尺寸。

然而,我没有iPhone可以测试,并且我用于测试屏幕尺寸的代码不起作用,想知道是否有另一种检测设备类型的方法?

NSLog(@"%f", [ [ UIScreen mainScreen ] bounds ].size.height);

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
    if([UIScreen mainScreen].bounds.size.height == 568.0)
    {
        //move to your iphone5 storyboard
        [self changeView:splashScreenBIGV viewH:splashScreenH animLength:SCREEN_CHANGE_ANIM_LENGTH];
   }
    else{
        //move to your iphone4s storyboard
        [self changeView:splashScreenV viewH:splashScreenH animLength:SCREEN_CHANGE_ANIM_LENGTH];            
    }
}

1
尝试使用此问题的早期答案 - Richard Altenburg - Brainchild
同意@RichardAltenburg-Brainchild的说法 - 生活的现实是有时你需要一个快速解决方案。迁移到约束布局系统是长期正确的方法,但如果你有许多视图,这将需要一些时间。 - David H
使用我在这里发布的代码优化通用应用程序,适用于iPhone 3Gs/4s/5和iPad的屏幕分辨率。https://dev59.com/HWct5IYBdhLWcg3wCZMT#17379460 - BlackSheep
2个回答

60

对于我的通用应用,Forex App,我只是简单地使用屏幕高度检测概念,如下所示:

CGSize screenSize = [[UIScreen mainScreen] bounds].size;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    if (screenSize.height > 480.0f) {
        /*Do iPhone 5 stuff here.*/
    } else {
        /*Do iPhone Classic stuff here.*/
    }
} else {
    /*Do iPad stuff here.*/
}

0

答案在这里here。基本上,你不需要这样做。在iOS 6中使用新的约束布局系统。如果你必须为每个具有不同屏幕尺寸/分辨率的新设备重新设计布局,你将会一直被困扰。


好的,我明白你的意思了。我不想为每个屏幕创建新的xib文件。那么,我是要重新创建所有屏幕作为iPhone5屏幕吗?它会自动缩小到旧设备的尺寸吗? - hanimal_p
OP还提到了一个现有的iOS 4项目。也许他现在不想或不需要升级到iOS 6。 - wuf810

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接