我有一个UIView子类对象,它动画并因此在我的UIViewController视图中作为子视图随时间改变其位置。实际上我移动的UIView子类只是一个球的图像,它正在移动,好像它是从我的设备屏幕顶部边界垂下来的。但是要成为一个真正的钟摆,我还想在我的球和CGPoint之间画一条线,它从屏幕顶部垂下来。
我的想法是每次UIView改变位置时画一条线。但是,由于移动是在iOS API中完成的(我只是调用类似[myBallView swing]
的东西),所以我无法在移动发生的同一个地方执行此操作。我其实并没有动画自己的观点。
我脑子里想要解决我的问题的唯一解决方案非常糟糕:子类化UIView,将其作为超级视图添加到我移动的UIView中,并在每次调用drawRect
时添加一行。但我甚至不确定会在那里召唤drawRect
。无论哪种方式,都必须有更好的解决方案。
有谁知道我的问题的一个很好的解决方案?
答案 0 :(得分:0)
将UIView的自定义子类作为superview是合理的。
但是,我建议您不要自己绘制线条,而是在自定义视图中实现+ layerClass,并将支持图层设为CAShapeLayer。
然后,您可以在视图的形状图层中创建一个CGPath,它是一条线,并在您的另一个视图的中心移动时操纵该线的起点和终点。形状图层设计为在屏幕更新过程中绘制,您甚至可以通过使用CABasicAnimation更改路径的端点来进行更改动画。