【问题标题】:iPhone 5 UI screen issuesiPhone 5 UI 屏幕问题
【发布时间】:2012-11-16 08:24:59
【问题描述】:

经过大量谷歌搜索后,我问了这个问题。我有一个应用程序,我想让它与 iPhone5 兼容。我将 Default-568h@2x 添加到包含近 10 个视图的应用程序中。所以我改变了这样的看法..

在 viewDidLoad 中:

    if ([[UIScreen mainScreen] bounds].size.height >= 568) {
      self.view.frame = CGRectMake(0, 0, 320, 568);
    //iPhone5
    }
    else {
    }
window.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

我在 didFinishLaunching 中使用选项进行了此更改:

window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

这样做后我发现了一些问题..

  1. 屏幕底部,即 88px 长,即使放置在其上的控件也无法触摸 - 为此,我在 MainWindow.xib 的属性中设置了 FullScreenAtLaunch,但不起作用
  2. 我有文本框在视图中,当它聚焦时键盘即将到来,但在键盘视图之上,如何摆脱它。

如何解决这个问题,任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: objective-c user-interface ios6 xcode4.5 iphone-5


    【解决方案1】:

    这是因为在您在 App 委托类中创建 UIWindow 的那一行中,您可能会有如下内容:

    self.window = [[UIWindow alloc] initWithFrame:CGRectMake(0,0,320,480);
    

    将其更改为:

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    

    也是你现在做的地方:

    if ([[UIScreen mainScreen] bounds].size.height >= 568) {
      self.view.frame = CGRectMake(0, 0, 320, 568);
    //iPhone5
    }
    else {
    }
    

    你也可以这样做:

    self.view.frame = [[UIScreen mainScreen] bounds];
    

    但大多数情况下不需要这样做,因为视图控制器的视图会正确占用空间。如果您在界面生成器中正确设置了 AutoResizeMasks,您将不会在代码中设置框架。

    【讨论】:

    • 问题仍然在于窗口占据了整个屏幕的高度。
    • 我应该怎么做才能使其具有交互性以及关于 2 个问题
    • 它不可交互,因为窗口高度不正确,如果通过 NIB 创建窗口,请在创建 UIWindow 的位置发布代码,请确保在界面生成器中正确设置 AutoResizeMake。
    • 我有通用应用程序,并且我已将代码添加到 AppDelegare_iPhone、applicationDidFinishLaunchingWithOptions:
    • 我有 xib 文件而不是故事板,即使我尝试过任何一种方式都没有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多