3

@1x バージョンでアプリを完成させ、コードを使用して多くのインターフェイスを作成しました。つまり:

  • UIラベル
  • UIView

そしてすべてが素晴らしく見えます。Retina ディスプレイでアプリを使用すると、明らかにすべてが @2x にスケールアップします。花火/フォトショップでデザインしたグラフィックがいくつかありますが、もちろん、問題なく動作する @2x バージョンを作成しました。私の問題は、上記の標準インターフェイス要素です。

質問: どうすればいいですか

  • UILabel に、両方の解像度で 1px のストロークを持つフォントがありますが、 @2x では高さと幅が 2 倍になりますか?
  • 両方の解像度で (画面の区切りとして) 高さ 1px の UIView を持っていますか? @2x の 2px の行は問題ありませんが、実際には 1px の高さの方がよりエレガントに見えます。

私が現在使用しているセパレータービューを作成するために:

UIView *separatorLine = [[UIView alloc]initWithFrame:CGRectMake(0,200,320,1)];
[self.view addSubview:seperatorLine];

これは @1x の解像度では問題なく動作しますが、@2x では次のように表示されるのではなく、@2x では高さが 2px まで大きくなります。

seperatorLine.frame == (0,400,640,1)

両方の解像度で機能するように、そのようなコードをどのように変更する必要がありますか?

4

2 に答える 2

2

次の方法で画面のスケールを確認できます

CGFloat scale = ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [UIScreen mainScreen].scale : 1.0);

スケールが 2.0 の場合、Retina ディスプレイを使用しており、セパレーターのフレームを に変更できますCGRectMake(0.0, 200.0, 320.0, 0.5)

于 2012-04-21T07:07:58.647 に答える
1

Apple の Cocoa 要素を使用する場合、そのことを心配する必要はありません。これは、私たち開発者にとって Retina ディスプレイの最も優れた点です。

あなたが言ったようにグラフィックを@2倍にする必要がありますが、デバイスは必要に応じてCocoa表示要素を自動的にスケーリングします。Apple は「ピクセル」と「ポイント」を明確に区別しており、フレームはポイントを使用して設定されます。ポイントは、従来のディスプレイでは 1 ピクセル、Retina ディスプレイでは 2 ピクセルです。これは、実際にフレームを設定しCGRectMake(0,400,640,1)た場合、前述のように線を画面の下部に配置し、画面の幅の 2 倍にすることを意味します (もちろん、画面の境界によって切り取られます)。Retina ディスプレイでその線の高さを 1 ピクセルにしたい場合は、それを画像にします。標準画像は 320x1、@2x は 640x1 です。

私の言いたいことを知りたいが、Retina ディスプレイ デバイスを持っていない場合は、シミュレーターで実行し、メニューから [Hardware] > [Device] > [iPhone (Retina)] を選択できます。

幸運を。

于 2012-04-21T09:31:09.377 に答える