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

如:有3个色块

let view1 = UIView(frame: CGRect(x: 100.0, y: 100.0, width: 300.0, height: 300.0))
view1.backgroundColor = UIColor.cyan
self.view.addSubview(view1)

let view2 = UIView(frame: CGRect(x: 50.0, y: 50.0, width: 100.0, height: 100.0))
view2.backgroundColor = .red
view1.addSubview(view2)

let view3 = UIView(frame: CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0))
view3.backgroundColor = .blue
view1.addSubview(view3)
图片名称

1. 坐标转换

from: 从哪个坐标系 to: 到哪个坐标系

/// view1 上的 view2 在 self.view 上的位置
print("view2.center on self.view: \(view1.convert(view2.center, to: self.view))")
/// 同上
print("view2.center on self.view: \(self.view.convert(view2.center, from: view1))")

// print
// view2.center: (100.0, 100.0)
// view2.center on self.view: (200.0, 200.0)
// view2.center on self.view: (200.0, 200.0)

2. 布局转换

/// view1 上的 view2 在 self.view 上的位置
print("view2 on self.view: \(view1.convert(view2.frame, to: self.view))")
/// 同上
print("view2 on self.view: \(self.view.convert(view2.frame, from: view1))")

// print
// view2 on self.view: (150.0, 150.0, 100.0, 100.0)
// view2 on self.view: (150.0, 150.0, 100.0, 100.0)

3. 包含、相交

/// view1 是否包含 view2.center
print("view1 contains view2.center: \(CGRectContainsPoint(view1.frame, view2.center))")
/// view1 是否包含 view2
print("view1 contains view2: \(CGRectContainsRect(view1.frame, view2.frame))")
/// view2 和 view3 是否相交
print("view2 intersect view3: \(CGRectIntersectsRect(view2.frame, view3.frame))")

// print
// view1 contains view2.center: true
// view1 contains view2: false
// view2 intersect view3: true

github Demo

相关推荐

  1. GPS经纬度坐标转换

    2024-03-28 04:38:03       15 阅读
  2. Qt的坐标转换

    2024-03-28 04:38:03       15 阅读
  3. Qt QML 坐标转换函数

    2024-03-28 04:38:03       16 阅读

最近更新

  1. ArduPilot开源代码之AP_OpticalFlow_MSP

    2024-03-28 04:38:03       0 阅读
  2. API分页处理指南:Postman中的高效数据浏览技巧

    2024-03-28 04:38:03       1 阅读
  3. 对称加密与非对称加密如何实现密钥交换

    2024-03-28 04:38:03       1 阅读
  4. 各种音频处理器

    2024-03-28 04:38:03       1 阅读
  5. this指针

    2024-03-28 04:38:03       1 阅读
  6. Object.defineProperty与Proxy对比【简单易懂】

    2024-03-28 04:38:03       1 阅读

热门阅读

  1. 题目 2850: 输出亲朋字符串

    2024-03-28 04:38:03       22 阅读
  2. typeScript6(其他类型)

    2024-03-28 04:38:03       17 阅读
  3. git的实际应用场景

    2024-03-28 04:38:03       19 阅读
  4. Docker的常用命令

    2024-03-28 04:38:03       17 阅读
  5. 数据分析---SQL基础

    2024-03-28 04:38:03       21 阅读
  6. 失业我们要直面恐惧乐观应对,早做准备和计划

    2024-03-28 04:38:03       18 阅读