iOS_convert point or rect 坐标和布局转换+判断

打印 上一主题 下一主题

主题 1049|帖子 1049|积分 3147

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如:有3个色块
  1. let view1 = UIView(frame: CGRect(x: 100.0, y: 100.0, width: 300.0, height: 300.0))
  2. view1.backgroundColor = UIColor.cyan
  3. self.view.addSubview(view1)
  4. let view2 = UIView(frame: CGRect(x: 50.0, y: 50.0, width: 100.0, height: 100.0))
  5. view2.backgroundColor = .red
  6. view1.addSubview(view2)
  7. let view3 = UIView(frame: CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0))
  8. view3.backgroundColor = .blue
  9. view1.addSubview(view3)
复制代码

1. 坐标转换

from: 从哪个坐标系 to: 到哪个坐标系
  1. /// view1 上的 view2 在 self.view 上的位置
  2. print("view2.center on self.view: \(view1.convert(view2.center, to: self.view))")
  3. /// 同上
  4. print("view2.center on self.view: \(self.view.convert(view2.center, from: view1))")
  5. // print
  6. // view2.center: (100.0, 100.0)
  7. // view2.center on self.view: (200.0, 200.0)
  8. // view2.center on self.view: (200.0, 200.0)
复制代码

2. 布局转换

  1. /// view1 上的 view2 在 self.view 上的位置
  2. print("view2 on self.view: \(view1.convert(view2.frame, to: self.view))")
  3. /// 同上
  4. print("view2 on self.view: \(self.view.convert(view2.frame, from: view1))")
  5. // print
  6. // view2 on self.view: (150.0, 150.0, 100.0, 100.0)
  7. // view2 on self.view: (150.0, 150.0, 100.0, 100.0)
复制代码

3. 包含、相交

  1. /// view1 是否包含 view2.center
  2. print("view1 contains view2.center: \(CGRectContainsPoint(view1.frame, view2.center))")
  3. /// view1 是否包含 view2
  4. print("view1 contains view2: \(CGRectContainsRect(view1.frame, view2.frame))")
  5. /// view2 和 view3 是否相交
  6. print("view2 intersect view3: \(CGRectIntersectsRect(view2.frame, view3.frame))")
  7. // print
  8. // view1 contains view2.center: true
  9. // view1 contains view2: false
  10. // view2 intersect view3: true
复制代码

github Demo

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表