2012-09-21 26 views
13

私は自分のアプリを1つ以上に移行しています。私はUIPickerViewを使用しています。 viewDidLoadメソッドでは、ピッカーを作成し、y起点をself.view.frame.size.heightに設定して、画面外にします。それから、必要に応じて移動します。iPhone5ではUIViewの高さが正しくありません

iPhone 5 self.view.frame.size.heightはまだ480を返していますが、UIViewは画面を正しく塗りつぶします。

私はさらにを使ってみると、それは何か別のものを返すかもしれないと思っています...ダイスはありません。なぜこのようなことが起こっているのかについてのアイデア。

+2

プロジェクトに640x1136ピクセル[email protected]ファイルを追加しています。それがなければ、あなたのアプリは新しいデバイス上で完全な高さに伸びません。詳細情報[ここ](http://stackoverflow.com/a/12397309/877465)。 –

+0

他のビューは全画面表示ですか?あなたの目標にiPhone 5のスクリーンショットを追加することを覚えましたか? –

+0

はい新しいデフォルト画像があります。私はその問題を発見した。私のペン先は "iPhone 5のフルスクリーン"に設定しなければなりません(私はそれが呼ばれていると思います)。私はそれがペン先からビューのサイズをロードし、autoResizeMaskを考慮しないと思います。 – random

答えて

22

これは、ビューのペン先で選択したサイズがviewWillAppear: (BOOL) animatedメソッドまで使用されるためです。その後、正しいサイズになります。

viewDidLoadが呼び出されるので、あなたが正しいサイズを持つように次のコードを使用することができますしかし

CGSize viewSize = [[UIScreen mainScreen] bounds].size; 
viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT); 

STATUS_BAR_HEIGHTは20ですが、それはあなたのアプリケーションに依存します。その行を追加する必要はありません。

EDIT

mainScreen境界を使用しての問題点は、フレームが姿勢変化に変化しないことです。それが設計されている方法です。次でそれをうまくすることができます

CGSize viewSize = [[UIScreen mainScreen] bounds].size; 

    if(UIInterfaceOrientationIsLandscape(CURRENT_ORIENTATION)){ 
     viewSize = CGSizeMake(viewSize.height, viewSize.width - STATUS_BAR_HEIGHT); 

    } else { 
     viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT); 
    } 

CURRENT_ORIENTATION[[UIApplication sharedApplication] statusBarOrientation];

1

問題が見つかりました。私のペン先は "iPhone 5のフルスクリーン"に設定しなければなりません(私はそれが呼ばれていると思います)。私はそれがペン先からビューのサイズをロードし、autoResizeMaskを考慮しないと思います。

IBのビューサイズが「サイズ:なし」に設定されている場合、ビューのサイズが正しくありません。 「Size:Retina 4 Full Screen」に設定する必要があります。奇妙な。

+0

しかし、あなたがそれを行うとあなたのアプリを実行することができますあなたがiphone 5ビューの高さを取得する原因は、不正確な高さのビューを取得します。 – bllubbor

+0

あなたの権利:(アスパルテームの回答は正しい) – random

18

私は同じ問題に取り組んできました。 - (void)viewDidLoadのビューフレームを取得しようとしましたが、- (void)viewWillAppear:(BOOL)animatedが呼び出されるまで更新されていないことがわかりました。

ビューフレームを- (void)viewWillAppear:(BOOL)animatedに入れてみるといいでしょう。

+2

これは素晴らしいことですが、表示されるたびにビューを変更したくないので、ビューが読み込まれたら変更する必要があります。 –

+0

@ JoeD'Andrea私は同じ問題を抱えていますが、私は最も速い回避策は、isFirstLoadフラグをviewWillAppearメソッドで使用するために追加することだと考えています(これは別の方法です、p'raps?)。 。 – htafoya

+0

@ JoeD'Andreaあなたは[[UIScreen mainScreen] bounds] .sizeを使うこともできます – htafoya

関連する問題