【问题标题】:iPhone app retina and nonretinaiPhone 应用视网膜和非视网膜
【发布时间】:2013-02-10 13:19:14
【问题描述】:

我在 xcode 4.5 中开发了 ipad 和 iPhone 应用程序,并通过检查设备来做到这一点:

    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
{
   //code for ipad.Adjusting sizes for all the controls 
}
    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)
{
   //code for iphone.Adjusting sizes for all the controls 
}

但是当我在模拟器中检查 iphone5 的 Retina(4) 时,所有控件的大小都发生了变化,并且我为 iphone 提供的先前分辨率不匹配。

在这种情况下我该怎么办?

【问题讨论】:

  • 使用自动布局。这就是它的本意。
  • @RichardJ.RossIII 我也需要为 iPad 做吗?

标签: iphone ipad xcode4.5 iphone-5


【解决方案1】:
This is the other optional way to find out for check iPhone5

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

如果你想从底部显示组件..

#define GET_Y_AXIS_FROM_BOTTOM(a)(( double )([[ UIScreen mainScreen ] bounds ].size.height)-a)

CGRectMake(0,GET_Y_AXIS_FROM_BOTTOM(50),320,50)

【讨论】:

  • 意思是你要求重置iphone5的尺寸?
  • 我要问的是我是否在 iphone 中使用标签栏从 (0,411,320,50) 开始。如果是 iphone5,我应该再次更改此大小吗?因为当我测试保持不变时,我可以看到屏幕中间的标签栏?如果它是任何 iphone 设备,它如何自动调整大小?
  • 是的,你必须知道 iphone 5 的屏幕是 568 px 长,而 iphone 4 的屏幕是 480 px 长。
  • 但是现在从顶部出现了。我该怎么办?
  • 我再次更新了答案,请检查只需将 411 替换为 50
【解决方案2】:

您必须创建两个 xib 文件(一个用于 iPhone4 和 iPhone5),或者必须以编程方式创建所有控件,并将其放入循环中,像这样。

 CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if (screenBounds.size.height == 568) {
        //put your iphone 5 control here
    } else {
        //put your iphone 4 control here
    }

【讨论】:

  • 看看 iphone 的下一个版本会不会来,然后我们必须再写一次?有什么可以检查并让它根据 iphone 的版本自动调整所有控件。
  • 不行,这个时候你必须根据设备来改变你的界面。谁知道在接下来的版本中苹果会给我们一些自动调整的功能。(apple rock)
【解决方案3】:
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{

    //code

}
else
{

    //code

}

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    相关资源
    最近更新 更多