加载不同的xib for iphone5无法在设备中工作

时间:2013-05-19 09:06:56

标签: ios xcode xib

  

可能重复:

     

How to make xib compatible with both iphone 5 and iphone 4 devices
  Can I use two xibs with one viewcontroller - re: porting to 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”。

然后我使用this加载适当的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仍然显示上下黑条...

1 个答案:

答案 0 :(得分:0)

您的笔尖/资产上似乎使用了错误的后缀,请使用-568h@2x代替-568h

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

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

在此阶段还值得注意的是,使用更多nib文件来执行此操作将导致更大的.IPA。因此,值得一读的有关自动布局如何工作以及采用该方法来保持可执行文件大小的方法。