iOS坐标转换(func convert(_ point: CGPoint, to view: UIView?) -> CGPoint)

结论

// 把redView坐标系上的点greenViewOrigin转换为blueView的坐标系上的点为point
let point = redView.convert(greenViewOrigin, to: blueView)

// 把blueView坐标系上的点greenViewOrigin转换为redView的坐标系上的点为point1
let point1 = redView.convert(greenViewOrigin, from: blueView)

func convert(:to: ) -> CGPoint func convert(: from:) -> CGPoint
view为redView的子视图 let result = point - view.frame.origin let result = point + view.frame.origin
view不为redView的子视图 let result = point + redView.frame.origin - view.frame.origin let result = point - redView.frame.origin + view.frame.origin
绿色视图和蓝色视图为红色视图的子视图
       // 把redView上的点greenViewOrigin相对blueView结果为
       let point = redView.convert(greenViewOrigin, to: blueView)
       print("point=\(point)")

        // 把blueView上的点greenViewOrigin相对redView结果为
       let point1 = redView.convert(greenViewOrigin, from: blueView)
       print("point1=\(point1)")

       let point2 = redView.convert(blueViewOrigin, to: greenView)
       print("point2=\(point2)")

       let point3 = redView.convert(blueViewOrigin, from: greenView)
       print("point3=\(point3)")
       
       print("\n\n\n\n\n")
       
       let rect = redView.convert(greenView.frame, to: blueView)
       print("rect=\(rect)")
       
       let rect1 = redView.convert(greenView.frame, from: blueView)
       print("rect1=\(rect1)")

输出

屏幕快照 2017-01-16 下午5.42.51.png
func convert(_ rect: CGRect, to view: UIView?) -> CGRect
同
func convert(_ point: CGPoint, to view: UIView?) -> CGPoint
原rect的宽高不变
func convert(_ rect: CGRect, from view: UIView?) -> CGRect
同
func convert(_ point: CGPoint, from view: UIView?) -> CGPoint
原rect的宽高不变

注意

以上方法中view为空时相对keywindow

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UIView(控件) 功能一:界面显示1. 屏幕上显示的所有UI元素都叫做控件,也有人叫做视图、组件;按钮(UIB...
    翻这个墙阅读 672评论 0 0
  • 当我们想找到一个视图的子视图相对于当前控制器中的坐标位置时,用坐标转换就可以很方便的找到了,如下图所示: 如图所示...
    69a8e4612fc7阅读 1,267评论 0 2
  • 1、简单的两个view放到控制器的view里,其中blueView是redView的子控件 2、拖线到控制器里,打...
    XIAODAO阅读 289评论 6 2
  • 一、首先来看看一下我们的需求 将yellowView(黄色view)所在的frame转换为blueView(蓝色v...
    hj的简书阅读 2,339评论 0 3
  • 原文链接:http://www.cocoachina.com/ios/20161206/18297.html 1....
    TMMMMMS阅读 945评论 0 1