Ios drawRect绘制的内容是否能够使用UIView动画制作动画?

Ios drawRect绘制的内容是否能够使用UIView动画制作动画?,ios,cocoa-touch,uiview,uiviewanimation,Ios,Cocoa Touch,Uiview,Uiviewanimation,在iOS上,如果有两个圆,它们都是UIView对象,那么它们的中心或帧可以使用UIView动画制作动画 但困难在于,包含这两个圆的容器UITreeView,使用drawRect绘制一条连接圆中心的线。在drawRect中,我可以使用CG或UIKit来画线,并且我选择使用UIBezierPath的moveToPoint和addLineToPoint来画线,这实际上应该只是下面的CG调用,但更容易使用 但是,当一个圆设置动画到另一个位置时,线不会随之设置动画,因此动画可能看起来有点奇怪。有没有办法让

在iOS上,如果有两个圆,它们都是
UIView
对象,那么它们的
中心
可以使用
UIView
动画制作动画

但困难在于,包含这两个圆的容器
UITreeView
,使用
drawRect
绘制一条连接圆中心的线。在
drawRect
中,我可以使用
CG
UIKit
来画线,并且我选择使用
UIBezierPath
moveToPoint
addLineToPoint
来画线,这实际上应该只是下面的
CG
调用,但更容易使用

但是,当一个圆设置动画到另一个位置时,线不会随之设置动画,因此动画可能看起来有点奇怪。有没有办法让它变成动画

我尝试在TreeView类中而不是在
UINodeView类(圆圈)中设置动画,但这没有帮助。事实上,如果我在
drawRect
方法中使用随机颜色绘制圆,当圆在动画中缓慢移动时,颜色不会快速变化,这表明它的
drawRect
没有被调用。可能只是
CALayer
保存正在设置动画的缓存图像

那么,有没有一种方法可以使线条也具有动画效果呢

我能想到的其他方法是:

1) 使用hack可以使用
UIView
来固定线,这样它的框架就可以设置动画,但是如果圆移动,那么线需要在UIView内部从(0,0)到(200,200)绘制,但是现在线需要倾斜,从(200,0)到(0,200),那么在这种情况下,它可能无法工作。(但是如果我使用某种变换来同时翻转图像,它可能会起作用,但是考虑使用变换时似乎很复杂)

2) 使用
CADisplayLink
制作动画,只需让它调用
[treeView setNeedsDisplay]
在这种情况下,肯定会调用
drawRect
。(这可能有点过分,而且由于TreeView的整个背景将首先被擦除,因此屏幕上可能会出现一些闪烁)


或者有更简单或更好的方法吗?

您可以将路径指定给(例如将其包装在UIView子类中,该子类将CAShapeLayer作为其+layerClass返回)。该路径被分配给CGPath-path属性(请注意,UIBezierPath提供了CGPath属性)。 然后,在视图中有一条可以设置动画的线(例如使用UIView的组动画)
那么,创建一个最小的矩形包围着圆环的2个中心的CasePalelar层,然后调整层的大小,并考虑倾斜(0,0)到(200200)VS(200,0)到(200,0)的方向。或者只是创建一个覆盖整个屏幕的CAShapeLayer,并以我们想要的方式绘制路径,但是如果有32或64条这样的线,内存使用可能会很重?