我试图弄清楚如何在swift游乐场中使用UIView的convertPoint功能。我没有得到我期望的结果,我不知道为什么。
当我尝试:
import UIKit
let large = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
let small = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
let point = CGPoint(x: 200, y: 200)
large.convertPoint(point, toView: small)
我希望:{x: 100, y: 100}
我实际得到:{x: 200, y: 200}
我错过了什么?
答案 0 :(得分:0)
将您的代码(小视图)更改为
let large = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
let small = UIView(frame: CGRect(x: 20, y: 20, width: 200, height: 200))
let point = CGPoint(x: 200, y: 200)
let convertedPoint = large.convertPoint(point, toView: small)
print(convertedPoint)
打印出:(180.0,180.0)
正如你可以看到红点位于大 - 深灰色 - 视图的200,200(正好在中间)和小 - 浅灰色 - 视图的180,180(靠近右下角)。 / p>
如果我们现在回到你的例子,小视图的原点为0,0而不是20,20,红点位于大视图的200,200(正好在中间),也是小视图200,200(正好在右下角)。看:
所以你得到的输出完全有意义!希望我能帮忙......