动画UIView的CoreGraphics / drawRect内容

时间:2012-01-25 09:32:47

标签: ios animation uiview core-graphics drawrect

是否可以为UIView的CoreGraphics内容制作动画?

假设我有一个名为UIView的{​​{1}}子类,它实现了MyView方法,如下所示:

drawRect:

换句话说 - 它在我的UIView子类的左侧绘制一条垂直线。现在有一种简单的方法来动画这个UIView,以便该线从视图的左侧移动到右侧吗?我希望它从左到右“漂移”。

要明确 - 由于我不会进入的原因,我无法移动/动画- (void) drawRect: (CGRect) rect { CGContextRef c = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(c, someColor); CGContextSetLineWidth(c, someWidth); CGContextMoveToPoint(c, leftOfMyUIView, topOfMyUIView); CGContextAddLineToPoint(c, leftOfMyUIView, bottomOfMyUIView); CGContextStrokePath(c); } 的实例。我能想到的最好的解决方案是添加一个新的MyView子类。像UIView这样的东西,然后使LineView成为我想要绘制的线的确切尺寸,使用自己的LineView extends UIView方法填充它,然后将drawRect的实例添加到LineView作为子视图。这将允许我使用动画块为MyView对象的位置设置动画,但实现这么简单的事情似乎过于复杂。

1 个答案:

答案 0 :(得分:0)

根据您的评论,将会有数百个LineView实例,最好使用CALayer子类而不是UIView子类。 UIView对象为您提供事件处理,在iOS上,每个UIView都拥有一个CALayer来处理它的渲染。如果您不希望/需要对各个行进行事件跟踪,那么所有这些UIView实例可能都是不必要的开销。您可以访问父UIView的图层,并根据需要添加行子图层。

如果我正确理解您的问题,则不需要CoreGraphics。您可以设置线图层' backgroundColor来处理填充。或者,如果线条不直,您可以使用CAShapeLayer渲染线条的路径。