0

私は自動レイアウトを使用せず、すべてのビューをサブビューの自動サイズ変更に設定しています。私のサブビューは正しい幅を取得できず、次のハックを行います:

- (void)awakeFromNib {
    if([CEDeviceUtils isPhone5])
    {
        NSUInteger width = [CEViewUtils windowSize].width;
        if(width != 568) width = 568;
        [CEViewUtils sizeView:self atWidth:width];
    }
  }

isPhone5、windowSize、および sizeView は、私が使用するユーティリティ メソッドの一部にすぎず、それらの実装は私の質問にとって重要ではありません。

私はこのハックを使わなければならないのが好きではなく、何かが欠けているに違いありません. この問題を解決する方法の手がかりはありますか?

ありがとう!

4

1 に答える 1

0

4"Retinaディスプレイの有効解像度は320x568で、高さは568 ptです。widthプロパティが568かどうかを確認しているため、横向きを使用していると思いますが、よろしいですか?[CEViewUtils windowSize].widthデバイスの320pt幅をデフォルトの縦向きで返さないのですか?デバイスの回転の現在の状態に関係なく、おそらくプロパティを確認する必要がありますheight

isPhone5また、メソッドが実際に正しい値を返していることを確認しても問題はありません。コードにまたはブレークポイントをスローして、NSLog()制御が期待どおりの場所に到達するようにします。(メソッドについても同じawakeFromNibことが言えます。期待どおりに呼び出されることを確認してください。ビューメトリックが確立された後に呼び出されるviewWillAppearorviewDidAppearメソッドにこのコードを移動して、オーバーライドできるようにする必要がある場合があります。)

于 2012-11-11T09:59:04.203 に答える