在iOS上,如果有两个圆,都是
但问题在于,包含这两个圆的容器
但当一个圆动画到另一个位置时,线条不会随之动画,所以动画可能看起来有点奇怪。有没有办法让它也能动画呢?
我尝试在TreeView类中进行动画,而不是在UINodeView类(即圆)中进行动画,但这并不能帮助解决问题。实际上,如果我在其
那么有没有办法让线条也动起来呢?
我能想到的其他方法是:
1)使用一个hack来使用
2)使用
还有更简单或更好的方法吗?
UIView
对象,则可以使用UIView
动画来动画它们的center
或frame
。但问题在于,包含这两个圆的容器
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的整个背景将首先被擦除,因此屏幕上可能会出现轻微的闪烁)还有更简单或更好的方法吗?