UIView.convertPoint未按预期工作

时间:2015-11-06 20:26:46

标签: ios swift uiview uikit

我试图弄清楚如何在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}

我错过了什么?

1 个答案:

答案 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)

这是完全正确的。看一下图片: small view at (20, 20)

正如你可以看到红点位于大 - 深灰色 - 视图的200,200(正好在中间)和小 - 浅灰色 - 视图的180,180(靠近右下角)。 / p>

如果我们现在回到你的例子,小视图的原点为0,0而不是20,20,红点位于大视图的200,200(正好在中间),也是小视图200,200(正好在右下角)。看: small view at (0, 0)

所以你得到的输出完全有意义!希望我能帮忙......