5

シミュレーターを使用して、iPhone 4 の新しい高解像度をサポートする必要があるアプリケーションを構築する方法について、少し混乱しています。

アプリを実行するためにiphone4シミュレーターを選択した場合を除いて、[[UIScreen mainScreen] bounds]960x640が返されますが、代わりに古い解像度(480x320)が返されますか?

私の画面では iphone4 シミュレーターが巨大な電話として表示されますが、それでも 480x320 ピクセルしか構成されていないように見えます。たとえば、700 行目に何かを表示したい場合、画面から落ちるだけですか?

これに関するご意見ありがとうございます。

4

2 に答える 2

8

UIScreenには新しいscaleメソッドがあります。bounds.sizeにスケールを掛けて、ピクセルを取得します。スケーリングされていない値は、ポイントまたは仮想ピクセルと考えることができます。

UIScreenには少なくとも3.2以降のscaleメソッドがありますが、4.0以降にのみ文書化されているため、respondsToSelectorはあなたをだまします。UIScreenについて知りたいときでも、UIImageのスケールをチェックします。

UIScreen *mainScreen = [UIScreen mainScreen];
CGFloat scale = [mainScreen scale];
CGRect bounds = [mainScreen bounds];
CGRect pixels = bounds;

if ( scale > 0 ) {
    pixels.origin.x *= scale;
    pixels.origin.y *= scale;
    pixels.size.width *= scale;
    pixels.size.height *= scale;
}
于 2010-07-18T16:37:29.723 に答える
4

解像度に関する 2 番目の質問については、これが役立つかもしれません。
iOS4 以降では、ピクセル、ポイント、スケール ファクターがあります。

[[UIScreen mainScreen] bounds] 

境界は、ピクセル (960x640) ではなくポイント (480x320) を返します。
iOS4 アプリケーション プログラミング ガイド(ポイント対ピクセル):

iOS 4 以降では、UIScreen、UIView、UIImage、および CALayer クラスが、その特定のオブジェクトのポイントとピクセルの関係を示す倍率を公開します。iOS 4 より前では、この倍率は 1.0 であると想定されていましたが、iOS 4 以降では、基盤となるデバイスの解像度に応じて、1.0 または 2.0 のいずれかになります。将来的には、他の倍率も可能になる可能性があります。

于 2010-07-18T19:03:24.767 に答える