Ios 为不在设备中工作的iphone5加载不同的xib

Ios 为不在设备中工作的iphone5加载不同的xib,ios,xcode,xib,Ios,Xcode,Xib,可能重复: 我已经开发了一个iPhone应用程序,现在我正在尝试更新它,使其支持iPad和iPhone5。 我现在有很多帖子都在谈论如何处理这个问题,但没有一篇是为我工作的。3.5英寸iPhone和iPad可以加载所需的xib,但4英寸iPhone不能加载(尽管在模拟器中工作正常),因此我将如何处理它: 首先,我为每个viewController创建了三个不同的xib文件(viewController.xib、viewController~ipad.xib和viewController-56

可能重复:


我已经开发了一个iPhone应用程序,现在我正在尝试更新它,使其支持iPad和iPhone5。 我现在有很多帖子都在谈论如何处理这个问题,但没有一篇是为我工作的。3.5英寸iPhone和iPad可以加载所需的xib,但4英寸iPhone不能加载(尽管在模拟器中工作正常),因此我将如何处理它:

首先,我为每个viewController创建了三个不同的xib文件(viewController.xib、viewController~ipad.xib和viewController-568.xib)。在4''xib one中,我将视图的大小设置为“视网膜4全屏”

然后,我已经使用加载适当的xib。也可以这样说,在AppDelegate中,我使用如下选项设置了DidFinishLaunching:

AppDelegate.m


正如我所说的,它在模拟器中起到了很好的作用,但在实际设备中,只有iPad和3.5英寸的xib被正确加载。iPhone5仍然显示上下黑色条

您似乎在NIB/资产上使用了错误的后缀,请使用
-568h@2x
而不是
-568h

或者,我总是使用以下方式在代码中切换各种iOS资产/位置:

if([ [ UIScreen mainScreen ] bounds ].size.height == 568 )
{
    //iPhone 5.0 specific code
}
else
{
    //None iphone 5 code
}

在这个阶段还值得注意的是,使用更多的nib文件来完成这项工作将导致更大的.IPA。因此,阅读autolayout是如何工作的,并采用这种方法来降低可执行文件的大小是值得的

首先感谢您的回复,我知道autolayout,但我的应用程序必须与iOS5兼容,所以我恐怕这不是一个选项。我还尝试使用主屏幕大小加载一个或另一个笔尖。当我在模拟器上调试它时,它工作得很好,但由于某些原因,在真正的iPhone5设备编辑中不起作用:我已经更改了所有NIB和资产以供使用-568h@2x但是没有区别你知道iPhone5是在iOS 6发布之后发布的吗?这意味着这些后缀的命名法还没有在旧版本的操作系统上发布。你可能试图做一些不可能的事情。使用屏幕尺寸加载单独的NIB是可能的,因为我在过去已经这样做了,无论您使用的是什么版本的操作系统,您一定有其他错误。解决方案:该项目是旧的(iPhone5尚未发布),所以当我创建它时,该项目没有添加“默认值”-568h@2x.png". 我的资产有正确的sufix,但不知怎的,你的答案是正确的,谢谢!
if([ [ UIScreen mainScreen ] bounds ].size.height == 568 )
{
    //iPhone 5.0 specific code
}
else
{
    //None iphone 5 code
}