1

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

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

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

有谁知道我的问题的好方法?

4

1 回答 1

0

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

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

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

于 2013-09-07T19:29:08.993 回答