8

私は持っていCGRectます; その座標をユーザー座標系に転送できますか。つまり、左上隅から下ではなく、左下隅から上に移動できますか。これには定義済みの方法がありますか、それとも手動で計算する必要がありますか? 前もって感謝します。

4

1 に答える 1

14

長方形を、原点が左下にある座標系(名前を付けるために従来の座標系と呼びましょう)から原点が左上にある座標系(iPhone座標系)に変換するには、CGRectビューは長方形の参照であるため、が存在するビューのサイズ。

たとえば、サイズが200 x 300のビューがあり、がであるとしCGRectますCGRectMake(10, 20, 30, 40)。のサイズはCGRect同じままになります。変更されるのは原点だけです。実際には、y座標のみが変更され、x座標は変更されません。これは、従来の座標系とiPhone座標系の両方が左側(1つは左下、もう1つは左上)から始まるためです。

したがって、のようなものがありCGRectMake(10, y, 30, 40)ます。

  - (CGRect)rectangle:(CGRect)oldRect fromTraditionalToiPhoneCoordinatesWithReferenceViewOfSize:(CGSize)aSize
     {
      CGFloat oldY = oldRect.origin.y;  // This is the old y measured from the bottom left. 
      CGFloat newY = aSize.height - oldY - oldRect.size.height;

      CGRect newRect = oldRect;
      newRect.origin.y = newY;

      return newRect;
     }
    

iPhone(左上)の座標系から測定した新しい長方形は次のようになりますCGRectMake(10, 300 - 20 - 40, 30, 40) = CGRectMake(10, 240, 30, 40)

うまくいけば、この画像はそれをより明確にします うまくいけば、この画像はそれをより明確にします

于 2011-03-30T07:27:28.437 に答える