13

私は自分のアプリを何度も移行していますUIPickerView。viewDidLoad メソッドでピッカーを作成し、y 原点をself.view.frame.size.height画面外になるように設定します。その後、必要に応じて上に移動します。

iPhone 5self.view.frame.size.heightではまだ 480 が返されUIViewますが、画面は正しく表示されます。

私はCGRectGetHeight(self.view.bounds)それが何か違うものを返すかもしれないと考えて使ってみました...サイコロはありません。なぜこれが発生するのかについてのアイデア。

4

4 に答える 4

22

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

viewDidLoadただし、が呼び出されるため、次のコードを使用して正しいサイズにすることができます。

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

STATUS_BAR_HEIGHTは 20 ですが、アプリによって異なります。その行を追加する必要がある場合とない場合があります。

編集

境界を使用する際の問題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];

于 2013-01-14T16:23:19.237 に答える
18

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

したがって、ビュー フレームを取得してみてください- (void)viewWillAppear:(BOOL)animated。問題はありません。

于 2012-09-28T09:09:21.487 に答える
3

iOS は、バンドル内に Default-568h@2x.png 画像を検出した後、アプリが iPhone 5 で使用するように設計されていることを検出したようです。iPhone 5 の画面解像度用にアプリを開発または移行するにはどうすればよいですか? プロセス全体を概説する完全な回答があります。

于 2012-10-03T21:19:15.380 に答える
1

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

IBのビューサイズが「サイズ:なし」に設定されている場合、ビューのサイズは正しくありません。「サイズ:Retina4フルスクリーン」に設定する必要があります。変。

于 2012-09-24T16:25:41.017 に答える