2013-01-10 53 views
0

我已经做了几个应用程序,现在在iPhone 5和iPhone上工作,它真的成为一个基于frame.view.height编程和调整一切的麻烦,所以这次我在我的xib文件中制作视图,其中一个使用iPhone 5视网膜UIView,另一个使用常规UIView ...现在,如果用户正在使用iPhone 4-而另一个使用iPhone 5 +则该如何显示。 。我假设它将在应用程序代表的某处完成。基于iPhone屏幕大小显示不同的xib文件

我能察觉羯羊或没有用户通过在ViewDidAppear检查superviews框架高度(*它不会在viewDidLoad中工作)

但是,在我从那儿去选择使用iPhone 5,其查看我显示...我有1个视图控制器和xib文件中的视图的内容都连接到该视图控制。 视图本身没有连接起来......只有一个是与一个空白的Xcode项目附带的默认“*视图”,我不知道如何添加第二个。

谢谢!

+2

的[我可以用两个xibs一个视图 - 控制 - 回复:移植到iPhone 5可能重复(HTTP:// stackoverflow.com/questions/12678620/can-i-use-two-xibs-with-one-viewcontroller-re-porting-to-iphone-5) –

+0

不知道这是否有帮助,但[this](http:// stackoverflow.com/a/12396752/1354100)是如何处理多种屏幕尺寸的绝佳解决方案。可以改变你的基本设计决定,以使用两种不同的观点。 – Bejmax

回答

2

您可以测试[UIScreen mainScreen].bounds.size.height而不是您的视图来准确找到屏幕的高度。如果是480它的iPhone 4/4S,如果是568这是一个iPhone 5的4英寸屏幕

+0

但是,选择使用哪个视图的最佳方法是什么? 我只能说'[self.view addSubview:iPhone5View];'但是,然后我浪费显示两个视图的内存吗?那么如何摆脱默认视图并在其位置显示iPhone5视图? –

+0

通常你使用'UIViewController'方法在视图控制器级别执行 - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle'。实际上上面的@ JesseRusak评论中的链接有一个很好的代码示例,在视图控制器的'viewDidLoad'方法中使用'[[NSBundle mainBundle] loadNibNamed:'。 –

1
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    CGSize result = [[UIScreen mainScreen] bounds].size; 
    if(result.height == 480) 
    { 
     // iPhone Classic 
    } 
    if(result.height == 568) 
    { 
     // iPhone 5 
    } 
} 
相关问题