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];

ただし、ほとんどの場合、ビューコントローラのビューがスペースを正しく占有するため、これは必要ありません。Interface BuilderでAutoResizeMasksを正しく設定した場合、コードでフレームを設定することはできません。

于 2012-11-28T13:24:04.543 に答える