swift 获取子视图在父视图的坐标

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wm9028/article/details/81301064

官方文档

func convert(CGPoint, to: UIView?) -> CGPoint
//Converts a point from the receiver’s coordinate system to that of the specified view.
//将点从接收器的坐标系转换为指定视图的点

func convert(CGPoint, from: UIView?) -> CGPoint
//Converts a point from the coordinate system of a given view to that of the receiver.
//将一个点从给定视图的坐标系转换为接收器的坐标系。

func convert(CGRect, to: UIView?) -> CGRect
//Converts a rectangle from the receiver’s coordinate system to that of another view.
//将矩形从接收器的坐标系转换为另一个视图的矩形。

func convert(CGRect, from: UIView?) -> CGRect
//Converts a rectangle from the coordinate system of another view to that of the receiver.
//将矩形从另一个视图的坐标系转换为接收器的坐标系。

使用注意:
convert(_:to:) 方法是子视图调用,to里面放父视图 获取子视图在父视图的坐标
convert(_:from:) 方法是父视图调用,from里面放子视图 获取子视图在父视图的坐标
CGRect参数放入子视图,获取的CGRect的size也是子视图的

例子:
获取子视图在父视图的坐标:

self.cView是self.sView的子子子视图

//获取self.cView在self.sView的坐标,size是self.CView;
        let crect = self.cView?.convert((self.cView?.frame)!, to: self.sView);
//获取self.cView在self.sView的坐标,size是self.CView;

        let crect2 = self.sView?.convert((self.cView?.frame)!, from: self.cView);

上面两种方式是一样的

猜你喜欢

转载自blog.csdn.net/wm9028/article/details/81301064