1

可能重复:

如何使 xib 与 iphone 5 和 iphone 4 设备兼容
我可以使用两个 xib 和一个视图控制器 - 重新:移植到 iPhone 5

我已经开发了一个 iPhone 应用程序,现在我正在尝试更新它以支持 iPad 和 iPhone5。我现在有很多帖子谈论如何处理这个问题,但没有一个对我有用。3.5'' iPhone 和 iPad 加载他们需要的 xib,但 4'' iPhone 没有(尽管在模拟器中工作正常),所以这是我处理它的方法:

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

然后我用来加载适当的xib。说在 AppDelegate 中我设置 didFinishLaunchingWithOptions 也可能是相关的:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     NSString *nibName = [UIViewController nibNamedForDevice:@"ViewController"];
     self.viewController = [[BPViewController alloc] initWithNibName:nibName bundle:nil];
     UINavigationController *navCont = [[UINavigationController alloc]                   initWithRootViewController:self.viewController];
     self.window.rootViewController = navCont;
     [self.window makeKeyAndVisible];
     self.viewController.navigationController.navigationBar.barStyle = UIBarStyleBlack;
     return YES;
}

正如我所说,它在模拟器中就像一个魅力,但在真实设备中,只有 iPad 和 3.5'' xib 可以正确加载。iPhone5仍然显示上下黑条...

4

1 回答 1

0

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

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

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

在这个阶段还值得注意的是,使用更多的 nib 文件来执行此操作将导致更大的 .IPA。因此,值得一读自动布局的工作原理,并采用这种方法来降低可执行文件的大小。

于 2013-05-19T09:36:49.153 回答