根据 iPhone 屏幕大小显示不同的 xib 文件
Posted
技术标签:
【中文标题】根据 iPhone 屏幕大小显示不同的 xib 文件【英文标题】:Display different xib files based on iPhone screen size 【发布时间】:2013-01-10 21:38:09 【问题描述】:我现在已经制作了一些适用于 iPhone 5 和 iPhone 的应用程序,并且根据 frame.view.height 对所有内容进行编程和调整大小确实变得很麻烦,所以这次我在我的 xib 文件中创建了视图,一个使用 iPhone 5 Retina UIView 和使用常规 UIView 的...现在,如果用户使用 iPhone 4-,我如何显示一个,如果用户使用 iPhone5+,我如何显示另一个...我假设它会完成应用委托中的某处。
我可以通过检查 ViewDidAppear 中的超级视图帧高度来检测用户是否使用 iPhone 5(*它在 ViewDidLoad 中不起作用)
但是我从那里去哪里选择我显示的视图...我有 1 个视图控制器,并且 xib 文件中的两个视图内容都连接到受控的视图。 视图本身没有连接...只有一个带有空白 Xcode 项目附带的默认“*view”,我不知道如何添加第二个。
谢谢!
【问题讨论】:
Can I use two xibs with one viewcontroller - re: porting to iPhone 5 的可能重复项 不确定这是否有帮助,但this 是如何处理多种屏幕尺寸的绝佳答案。可能会改变您的基本设计决策以使用两种不同的视图。 【参考方案1】:您可以测试[UIScreen mainScreen].bounds.size.height
而不是您的视图,以准确找到屏幕的高度。如果是 480 就是 iPhone 4/4s,如果是 568 就是 iPhone 5 4 英寸屏幕
【讨论】:
那么选择使用哪个视图的最佳方法是什么?我只能说[self.view addSubview:iPhone5View];
但是我在浪费内存显示两个视图对吗?那么如何摆脱默认视图并在其位置显示 iPhone5 视图呢?
通常您在视图控制器级别使用UIViewController
方法- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
执行此操作。实际上,上面@JesseRusak 评论中的链接有一个很好的代码示例,在视图控制器viewDidLoad
方法中使用[[NSBundle mainBundle] loadNibNamed:
。【参考方案2】:
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
// iPhone Classic
if(result.height == 568)
// iPhone 5
【讨论】:
以上是关于根据 iPhone 屏幕大小显示不同的 xib 文件的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式更改不同 iPad 屏幕分辨率上的 .xib 大小