0

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

在 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. 我有文本框,当它聚焦时键盘即将到来,但在键盘视图之上,如何摆脱它。

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

谢谢

4

1 回答 1

3

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

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,您将不会在代码中设置框架。

于 2012-11-28T13:24:04.543 回答