Xcode - 如何检测iPhone的屏幕尺寸?

4

我有两个xib文件,一个用于iPhone 4,另一个用于iPhone 5;分别适配3.5英寸和4英寸的屏幕。现在,我只是想添加一些代码,让应用程序知道该加载哪一个xib文件。我有以下代码可以完成这个任务:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
    //Load 3.5 inch xib
    }
    if(result.height == 568)
    {
        //Load 4 inch xib
    }

我把它放在ViewController.M里(这是我应该放的地方吗?),然后构建失败,显示存在解析问题,需要标识符“(”

有人可以帮我简单修复一下吗?谢谢!


4
如果(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone),请使用这行代码。 - Buntylm
5
这个问题似乎不适合讨论,因为它涉及到一个拼写错误。 - Martin R
问题出在你的代码中,你多加了一个),只需要去掉它就可以正常工作了。 - Sugan S
@MartinR 不确定应该使用什么关闭原因。 - Sumurai8
@Sumurai8: 现在没有“预配置”的打字错误问题关闭原因了,可以参考http://meta.stackexchange.com/questions/192846/which-close-reason-should-i-use-to-close-typo-questions-now。 - Martin R
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)) { 移除,将代码放入 viewDidLoad 中。 - Maximilian Litteral
4个回答

18

将下面这行代码添加到你的prefix.pch文件中...这是检查屏幕尺寸的最简单方法,不需要编写额外的代码行...

#define   IsIphone5     ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

现在无论您想在哪里检查屏幕尺寸,只需使用下面的条件,并且您可以进行任何操作...

 if(IsIphone5)
{
    //your stuff
}
else
{  
  //your stuff
}

编程愉快!!!!


2
这并没有回答问题,问题在于给定的代码无法编译。 - rmaddy
2
这可能不是问题的答案,但这个答案是检测屏幕尺寸最简单、最聪明的方法,我的朋友。为什么要写3或4行代码来仅仅检测屏幕尺寸呢? - NiravPatel
@NiravPatel,你能简要解释一下为什么这是个聪明的回答吗? - Dhaval Bhadania
@DhavalBhadania:请解释一下Ghare aavje的含义... - NiravPatel
@NiravPatel,但它在我的代码中不起作用...你能解释一下如何使用它吗...真的,朋友,它不能运行吗? - Dhaval Bhadania
显示剩余3条评论

4
请设置这个条件
if ((int)[[UIScreen mainScreen] bounds].size.height == 568)
{
    // This is iPhone 5 screen
} else {
    // This is iPhone 4/4s screen
}

2
这并没有回答问题,问题是关于给定的代码无法编译的事实。 - rmaddy
@BradConidaris:当你为3.5或4英寸屏幕加载你的nib文件时,你可以检查这个条件并相应地加载你的nib文件。 - D-eptdeveloper
你能详细解释一下吗?对nibs感到困惑。 - Brad Conidaris
@BradConidaris:当您使用导航推送视图控制器时,可以检查此条件并加载所需的xib文件。 - D-eptdeveloper

2

请将此行末尾多余的 ")" 去除

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))

2
尝试删除最后一个括号。
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
      CGSize result = [[UIScreen mainScreen] bounds].size;
      if(result.height == 480)
      {
            //Load 3.5 inch xib
      }
      else if(result.height == 568)
       {
             //Load 4 inch xib
       }
}

-1 添加重复答案。 - rmaddy
我应该把代码放在哪个文件中?Appdelegate.m文件中吗? - Brad Conidaris

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