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

文章目录

    • [1. 坐标转换](#1. 坐标转换)
    • [2. 布局转换](#2. 布局转换)
    • [3. 包含、相交](#3. 包含、相交)

如:有3个色块

swift 复制代码
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: 到哪个坐标系

swift 复制代码
/// 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. 布局转换

swift 复制代码
/// 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. 包含、相交

swift 复制代码
/// 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

相关推荐
张飞签名上架5 小时前
苹果签名机制全解析:守护生态安全的数字钥匙
ios·苹果签名·超级签·企业签名
Digitally18 小时前
iPhone 卡在恢复模式:如何修复(分步指南)
ios·iphone
vx-bot55566618 小时前
企业微信ipad协议的协议状态机与生命周期管理
ios·企业微信·ipad
ITKEY_18 小时前
macOS通过命令行启动iOS模拟器
macos·ios
00后程序员张19 小时前
iPhone 无需越狱文件管理 使用Keymob查看导出文件
android·ios·小程序·https·uni-app·iphone·webview
OneCrab19 小时前
Iphone漏洞利用工具包 Coruna DarkSword
ios·cocoa·iphone
2501_9151063219 小时前
不依赖 Mac 也能做 iOS 开发?跨设备开发流程
ide·vscode·macos·ios·个人开发·swift·敏捷流程
2501_9160088919 小时前
Unity3D iOS 应用防篡改实战 资源校验、 IPA 二进制保护
android·ios·小程序·https·uni-app·iphone·webview
2501_9159090619 小时前
MachObfuscator全面解析:Apple平台Mach-O应用程序混淆技术指南
macos·ios·小程序·uni-app·objective-c·cocoa·iphone
RickeyBoy1 天前
解决 Swift Testing 中 DI 容器的竞态条件
ios