在 iOS 上,如果有两个圆圈,它们都是UIView
对象,那么它们的center
或frame
可以使用动画制作UIView
动画。
但困难在于,UITreeView
包含这两个圆的容器,使用 . 画一条连接圆心的线drawRect
。在drawRect
中,我可以使用CG
orUIKit
来画线,而我选择使用UIBezierPath
'smoveToPoint
和addLineToPoint
来画线,其实应该只是CG
下面的调用,但更容易使用。
但是当一个圆圈动画到另一个位置时,线条不会随之动画,所以动画看起来有点奇怪。有没有办法让它动画?
我尝试在 TreeView 类中而不是在UINodeView
类(圆圈)内设置动画,但这无济于事。事实上,如果我在它的drawRect
方法中使用随机颜色绘制圆,当圆在动画中缓慢移动时,颜色不会快速变化,表明它drawRect
没有被调用。它可能只是CALayer
保存一个正在动画的缓存图像。
那么有没有办法让线条也有动画呢?
我能想到的其他方法是:
1) 使用 hack 也可以使用 aUIView
来保持线条,因此它的框架可以动画,但是如果圆圈移动以便需要在 UIView 内从 (0, 0) 到 (200, 200) 绘制线条怎么办,但是现在这条线需要向另一个方向倾斜,从 (200, 0) 绘制到 (0, 200),所以在这种情况下,它可能不起作用。(但如果我同时使用某种变换来翻转图像,它可能会起作用,但考虑何时应该使用变换似乎很复杂)
2)CADisplayLink
用来做动画,让它调用[treeView setNeedsDisplay];
,在这种情况下,drawRect
肯定会调用。(这可能有点矫枉过正,由于 TreeView 的整个背景将首先被擦除,因此屏幕上可能会有一点闪烁)
还是有更简单或更好的方法?