在修复CGPoint和移动UIView对象的中心点之间绘制线的最佳方法

时间:2013-09-07 19:11:15

标签: ios objective-c uiview line drawrect

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

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

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

有谁知道我的问题的一个很好的解决方案?

1 个答案:

答案 0 :(得分:0)

将UIView的自定义子类作为superview是合理的。

但是,我建议您不要自己绘制线条,而是在自定义视图中实现+ layerClass,并将支持图层设为CAShapeLayer。

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