0

私はiOS6での開発を学ぶためにxcode4.5.2を使用しています。drawRectにこのコードがあります...

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGPoint midPoint;
    midPoint.x = self.bounds.origin.x + self.bounds.size.width/2;
    midPoint.y = self.bounds.origin.y + self.bounds.size.height/2;
... etc

どういうわけか、これをiPhoneシミュレーターで実行すると、結果は常に

midpoint.x = 160
midpoint.y = 252

シミュレーター(iPhone Retina画面)が縦向きモードであるか横向きに回転しているかに関係なく。したがって、結果として、ポートレートモードで描画したグラフィックは画面の中央に正しく配置されますが、ランドスケープでは左側にオフセットされます。

誰かが、なぜこれが当てはまるのかについて、どこから始めればよいのかを提案できますか?

このdrawRectコードは、画面のこの中間点(画面全体にまたがるUIView)を決定するという点で正しく機能する、私が作成した以前のアプリから直接取得されました。この問題は、このコード(クラス全体)を、これらのUIViewのインスタンスにセグエしている現在のプログラムにインポートしたときに発生します。

ありがとう。

4

1 に答える 1

0

それを理解した、私は思う...

不明な理由で(とにかく私には)、電話が回転したときに、電話内のビューのサイズが変更されて、新しい垂直方向と水平方向の寸法が表示されなかったようです。したがって、ビューのサイズは基本的に変更されないため、中点の座標は常に同じです。サイズインスペクターでは、ビューの左右にストラットのみがあり、スプリングはありません。

垂直方向と水平方向の両方のスプリングを追加することで、回転に合わせてビューのサイズが変更され、それに応じて中点座標が変化するように見えます。

ハードルは乗り越えましたが、なぜビューにスプリングを追加する必要があったのかはまだわかりません。なぜなら、私がフォローしていたデモではこの手順が必要ないように思われたからです。任意の提案をいただければ幸いです。ありがとう。

于 2012-11-28T20:05:24.007 に答える