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