如何在iOS中获取相对于Window的对象的位置?

时间:2012-01-30 17:56:54

标签: objective-c ios ios5 xamarin.ios

我们如何获得物体的“视觉”坐标?例如,在UIScrollView中获取文本字段的框架将为我提供相对于UIScrollView的X和Y,但我想知道X和Y,就像它们在视图中显示一样。

是否有内置功能?

3 个答案:

答案 0 :(得分:17)

一旦你有了CGPoint的观点,你可以打电话:

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

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

关于你UIView。

在你的观点中指出你的观点是坐标。并且用于查看传递

// Objective-C
[UIWindow keyWindow]

// C#
UIWindow.KeyWindow

这将返回一个CGPoint(C#中的PointF)转换为windows坐标系!

例如:

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

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

希望这会有所帮助:)

答案 1 :(得分:2)

UIView有一些convertPoint和convertRect函数:

答案 2 :(得分:2)

可能只是我,但这不会很好吗?

- (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;

}