能否对UIView
的CoreGraphics内容进行动画处理?
比如我有一个叫做MyView
的UIView
子类,实现了以下drawRect:
方法:
- (void) drawRect: (CGRect) rect {
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(c, someColor);
CGContextSetLineWidth(c, someWidth);
CGContextMoveToPoint(c, leftOfMyUIView, topOfMyUIView);
CGContextAddLineToPoint(c, leftOfMyUIView, bottomOfMyUIView);
CGContextStrokePath(c);
}
换句话说 - 它在我的 UIView 子类的左侧绘制了一条垂直线。现在有没有一个简单的方法来使这个 UIView 动起来,让这条线从视图的左侧移动到右侧?我希望它能够像漂浮一样从左到右移动。
要明确的是 - 由于某些原因,我不能移动/动画化 MyView 的实例。我能想到的最好的解决方案是添加一个新的 UIView 子类。例如,LineView 扩展 UIView,然后将 LineView 设为所需绘制线条的精确尺寸,使用其自己的 drawRect 方法填充它,然后将 LineView 实例作为子视图添加到 MyView 中。这将允许我使用动画块来动画化 LineView 对象的位置,但似乎过于复杂以实现如此简单的东西。
drawRect
不是用于动画的,它只适用于在单个时间点绘制。你需要动画视图的属性,在这种情况下是center
。将你的线条作为子视图或子图层(简单起见可以使用CAShapeLayer
)并移动它,这是唯一的方法。 - jrturtonUIView
或CALayer
)最适合? 在性能方面它们之间有很大差异吗? - Barjavel