Objective c 如何在iOS中获取对象相对于窗口的位置?

Objective c 如何在iOS中获取对象相对于窗口的位置?,objective-c,ios,ios5,xamarin.ios,Objective C,Ios,Ios5,Xamarin.ios,我们如何获得物体的“视觉”坐标?例如,在UIScrollView中获取文本字段的帧将给出相对于UIScrollView的X和Y,但我想知道X和Y,就像它们显示在视图中一样 是否有内置函数?一旦将点作为CGPoint,您就可以调用: // Objective-C - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view // C#'s UIView class contains this method: PointF Convert

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


是否有内置函数?

一旦将点作为CGPoint,您就可以调用:

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

// C#'s UIView class contains this method:
PointF ConvertPointToView (PointF point, UIView target);
在你的视野里

在你们的观点坐标中,把你们的观点作为观点来传递。和视图传递

// Objective-C
[UIWindow keyWindow]

// C#
UIWindow.KeyWindow
然后将返回转换为windows坐标系的CGPoint(C#中的PointF)

例如:

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

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

希望这有帮助:)

UIView有一些convertPoint和convertRect功能:


  • 可能就是我,但这行不行

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