0

ストーリー ボードに Retina 3.5" フォーム ファクターを適用した ViewController があります。iOS iPhone 6.1 シミュレーターにも Retina が構成されています
。SetFrame を使用して UIImageView を配置しようとすると、その CGRect 座標は非 Retina フォームになります。 (つまり、320x480 に配置すると、画面の中央ではなく右下に移動します):

[myImageView setFrame:CGRectMake(320, 480, myImageView.frame.size.width, myImageView.frame.size.height)];
[self.view addSubview:myImageView];

SetFrame を使用するときに Retina の CGRect 座標を取得するにはどうすればよいですか?
ありがとう。

4

2 に答える 2

4

これは、iOS がピクセルではなくポイントを使用するためです。このようにして、同じコードが網膜と非網膜の画面で機能します。したがって、位置を (320,480) に設定すると、ピクセル (320,480) ではなくポイント (320,480) に設定されます。このように、電話が非網膜の場合、その点は最終的にピクセル (320, 480) になり、網膜上では最終的にピクセル (640,960) になります。

したがって、あなたが望むように見えるのは次のとおりです。

[myImageView setFrame:CGRectMake(160, 240, myImageView.frame.size.width, myImageView.frame.size.height)];
[self.view addSubview:myImageView];

これにより、retina ディスプレイと通常のディスプレイの両方で、imageView の左上隅が同じ場所に配置されます。

于 2013-07-27T20:59:18.273 に答える
1

ビューを中央に配置するには:

CGFloat x = self.view.frame.size.width;
CGFloat h = self.view.frame.size.height;
[myImageView setCenter:CGPointMake(w/2, h/2)];
...
[self.view addSubview:myImageView];

CGRectMake には ax、y、width、height が必要です。X、y はビューの左上であるため、フル フレーム ビューには 0、0、w、h を使用します。

于 2013-07-27T21:23:14.613 に答える