0

アプリでビュー サイズを使用して、サブビューをコードに配置しています。

たとえば、次のようにします。

self.view.bounds.size.height

このサブビューは、ビューの内外でアニメーション化する必要があります。

これは古いデバイスで完全に機能しました。現在、iphone 5 をサポートしようとしていますが、古いデバイスの高さがまだ得られていることがわかりました。このアニメーション ビュー以外のすべてが iPhone 5 に完全に適合します。

適切なサイズを取得する唯一の方法は、xib でビューのサイズを変更することです。欠点は、iPhone 4 でアプリを実行すると、ビューのサイズが 4 インチのビュー サイズになることです。

ここで何が問題なのですか?それとも、これが想定されている方法であり、iPhone 5 用に追加の xib ファイルを作成する必要がありますか?

4

3 に答える 3

4

了解しました。答えは次のとおりです。

@mrwalkerが言ったように、ビューのサイズが自動的にまたはプログラムで変更されることを確認してください。

viedDidLoadまた、メソッドでビューのサイズがまだ変更されていないことに注意してください。(これは私の間違いでした)

サイズ変更されたビューのサイズが必要な場合はviewWillAppear、ビューがすでに適切なサイズになっていることを確認してください。

@mrwalkerと@AndyDevに感謝します

于 2012-10-02T12:50:40.627 に答える
3

ビューが実行されているデバイスに合わせてビューのサイズが変更されていることを確認する必要があります。次のいずれかを実行できます。

  1. iPad の場合と同様に、iPhone 5 用の新しい Xib を作成します。
  2. 既存の Xib を自動的にまたはプログラムでサイズ変更する

(1) を選択するのは、別のレイアウト (より多くの/より少ないボタンなど) を使用することを意図している場合のみです。

(2) を達成する方法は、iOS 6 の自動レイアウトを使用しているか、古い自動サイズ変更モデルを使用しているかによって異なります。どちらの方法も、Xcode の Utilities > Size Inspector で、またはプログラムで制御できます。

ビューとビュー コントローラーが 1 つしかない場合は、ビューを親ウィンドウに合わせて自動的にサイズ変更できるようにするだけで十分です。

于 2012-09-28T09:21:34.040 に答える
2

同様の問題が発生し、正しい高さが得られず、自動レイアウト/自動サイズ変更を使用しても目的の効果が得られませんでした。次のコードを使用して画面サイズを決定し、これに基づいて変更を加えました。

if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
    CGSize result = [[UIScreen mainScreen] bounds].size;
    CGFloat scale = [UIScreen mainScreen].scale;
    result = CGSizeMake(result.width * scale, result.height * scale);
    if(result.height == 1136){
        // iPhone 5 (1136px height)
    } else {
        // Not iPhone 5
    }
}
于 2012-09-28T09:49:49.917 に答える