2012-01-30 14 views
8

オブジェクトの「ビジュアル」座標を取得するにはどうすればよいですか?たとえば、UIScrollView内でテキストフィールドのフレームを取得すると、UIScrollViewに相対するXとYが表示されますが、ビューに表示されているかのようにXとYを知りたいと思います。iOSのウィンドウに相対的なオブジェクトの位置を取得するには?

組み込み関数はありますか?あなたがするCGPointとしてのポイントを持っていたら

答えて

17

あなたが呼び出すことができます。あなたのUIView上の

// Objective-C 
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

// C#'s UIView class contains this method: 
PointF ConvertPointToView (PointF point, UIView target); 

を。

あなたの意見であなたのポイントを渡して、ポイントとしてコーディネートします。これは、その後のウィンドウにするCGPoint(C#でPointF)変換を返します

// Objective-C 
[UIWindow keyWindow] 

// C# 
UIWindow.KeyWindow 

のビューのパスのための座標系を!例えばので

// Objective-C 
CGPoint convertedPoint = [myScrollView convertPoint:textField.frame.origin 
              toView:[UIWindow keyWindow]]; 

// C# 
var convertedPoint = myScrollView.ConvertPointToView (
    textField.Frame.Location, UIWindow.KeyWindow); 

・ホープこのことができます:)

2

UIViewのは、いくつかのconvertPointとconvertRect機能があります。

など

2

は私だけかもしれませんが、この作品の罰金はwouldntの?

- (CGRect) convertView:(UIView*)view 
{ 
    CGRect rect = view.frame; 

    while(view.superview) 
    { 
     view = view.superview; 
     rect.origin.x += view.frame.origin.x; 
     rect.origin.y += view.frame.origin.y; 
    } 

    return rect; 

} 
+0

ある時点で、ビューがUIScrollViewの内部にあるときはありません。 –

関連する問題