2012-10-16 23 views
2

我正在开发通用iOS应用程序并希望为iPhone 5使用不同的xib文件。它目前的工作方式是通过自动选择带有正确设备修改器的文件(如指定这里:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html#//apple_ref/doc/uid/10000051i-CH1-SW2)。然而,没有提及如何处理iPhone 5.我很惊讶,因为我觉得他们更喜欢开发人员在5上创建不同/独特的体验,而不是仅仅自动缩放......用于动态xib加载的iPhone 5设备修改器

任何人都知道可以使用的修饰符? (比如myxib〜iphone5.xib)比自己处理设备检测和切换更方便。

干杯!

+0

如果创建一个iPhone 5的闪屏图像编辑在Xcode目标,它会创建一个后缀/修改专门针对iPhone的高大单独'Default.png'变种。我不知道XIB或Storyboard加载是否尊重这一点。 – Jesper

+0

是的,试图用〜喜欢它使用了一个,但没有运气:( –

+0

568h这可能会帮助你 http://stackoverflow.com/questions/13275144/how-to-make-xib-compatible-with -both-iphone-5-iphone-4-devices/13283851#13283851 –

回答

4

不幸的是,没有命名约定,但有一种方法。这是我使用的是什么:

我有一个全球性的.h文件中所谓的,我把我所有的#define宏在GlobalConstants在那里,我有这样的:

static BOOL is4InchRetina() 
{ 
    if ((![UIApplication sharedApplication].statusBarHidden && (int)[[UIScreen mainScreen] applicationFrame].size.height == 548) || ([UIApplication sharedApplication].statusBarHidden && (int)[[UIScreen mainScreen] applicationFrame].size.height == 568)) 
     return YES; 

    return NO; 
} 

然后在我的任何视图控制器类 - 我重写init方法是这样的:

#import GlobalConstants.h 

-(id) init { 

if(is4InchRetina()) self = [super initWithNibName:@"myNibName5" bundle:[NSBundle mainBundle]]; 
else self = [super initWithNibName:@"myNibName" bundle:[NSBundle mainBundle]]; 

return self 
} 
+1

感谢你们,尽管它们还没有为我们做过,我已经解决了类似的问题 - 一种全球可访问的方法,当给一个XSS名称的NSString时,返回一个新的手动添加适当的修饰符,所以我可以继续使用〜ipad〜iphone5方案来达到我自己的目的 –

+0

@KieranHarper我听到你的声音。 –