【问题标题】:Display different xib files based on iPhone screen size根据 iPhone 屏幕大小显示不同的 xib 文件
【发布时间】: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”,我不知道如何添加第二个。

谢谢!

【问题讨论】:

标签: ios view uiviewcontroller toggle iphone-5


【解决方案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
    }
}

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多