【问题标题】:Best way to draw line between fix CGPoint and moving UIView object's center point在修复 CGPoint 和移动 UIView 对象的中心点之间画线的最佳方法
【发布时间】:2013-09-07 19:11:14
【问题描述】:

我有一个 UIView 子类对象,它作为我的 UIViewController 视图中的子视图进行动画处理,因此随着时间的推移改变其位置。实际上,我移动的 UIView 子类只是一个球的图像,它正在移动,就好像它从我的设备屏幕顶部边框垂下来一样。但要成为一个真正的钟摆,我还想在我的球和它悬挂在我屏幕顶部的 CGPoint 之间画一条线。

我的想法是每次 UIView 改变它的位置时画一条线。但由于移动是在 iOS API 中完成的(我只是调用类似 [myBallView swing] 的东西),因此我无法在移动发生的同一个地方执行此操作。实际上,我自己并没有为视图设置动画。

我想解决我的问题的唯一解决方案非常糟糕:继承 UIView,将其作为超级视图添加到我移动的 UIView 中,并在每次调用 drawRect 时添加一行。但我什至不确定drawRect 是否会在那里被调用。无论哪种方式,都必须有更好的解决方案。

有人知道我的问题的好方法吗?

【问题讨论】:

    标签: ios objective-c uiview line drawrect


    【解决方案1】:

    自定义 UIView 的子类作为父视图是合理的。

    但是,与其自己画线,我建议在您的自定义视图中实现 +layerClass,并将支持层设为 CAShapeLayer。

    然后您可以在视图的形状图层中创建一条 CGPath,它是一条线,并在其他视图的中心移动时操纵该线的起点和终点。形状图层旨在作为屏幕更新过程的一部分进行绘制,您甚至可以通过使用 CABasicAnimation 更改路径的端点来使更改动画化。

    【讨论】:

    • 您能否详细说明当视图的中心移动时您将如何处理更新? +layerClass 中是否有需要重写的方法,它会在动画时自动调用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多