【问题标题】:Get CGRect coordinates dynamically动态获取CGRect坐标
【发布时间】:2014-09-14 21:38:55
【问题描述】:

我试图在我的屏幕上获取两个UIImageView 之间的距离,为此我计划从图像 1(不可移动)中减去图像 2(可移动)的中心坐标。 为此,我需要能够动态获取这些图像的坐标,我正在使用这样的东西:

    var centerBoardX = CGRectGetMidX(BlackBoard.frame)
    var centerBoardY = CGRectGetMidY(BlackBoard.frame)
    var centerRoundX = CGRectGetMidX(round1.frame)
    var centerRoundY = CGRectGetMidY(round1.frame)

    println(centerBoardX - centerRoundX)
    println(centerBoardY - centerRoundY)

但是,即使我在整个屏幕上移动 image2,我总是会根据两个 UIImageViews 的初始坐标得到相同的结果。

怎么了?为什么我只得到初始坐标而不是新坐标? 谢谢!

【问题讨论】:

  • 使用调试器查看发生了什么,在移动视图时观察框架。日志记录也有帮助,还可以考虑 Spark Inspector 在运行应用程序时查看所有 3D 视图 - 无需添加任何内容到应用程序中即可使用它。也许你并没有改变你认为的观点。
  • 也许检查bounds 而不是frame 或检查round1.center?也许检查layer 位置?这完全取决于你如何让 uiimageviews 移动......
  • 如何移动图像视图?通过滚动视图?通过转型?通过自己更改框架?

标签: ios swift coordinates cgrect


【解决方案1】:

好的,所以我发现了不正确的地方。 我的 UIImageViews 是由框架定义的,我得到了框架的坐标,它们总是相同的。 为了获得正确的坐标,我需要从对象的超级视图中获取信息。 所以工作代码是

var centerBoardX = BlackBoard.superview?.center.x
var centerBoardY = BlackBoard.superview?.center.y
var centerRoundX = Round1.superview?.center.x
var centerRoundY = Round1.superview?.center.y

println(centerBoardX! - centerRoundX!)
println(centerBoardY! - centerRoundY!)

现在它完美地工作了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2023-03-16
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多