animationUIView的CoreGraphics / drawRect内容

是否有可能animationUIView的CoreGraphics内容?

说我有一个名为MyViewUIView子类,实现了像这样的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的子类的左边画一条垂直线。 现在有一个简单的方法来animation这个UIView,使行从视图的左侧移动到右侧? 我希望它从左到右“漂移”。

要清楚 – 由于我不会去的原因,我不能移动/animationMyView的实例。 我能想到的最好的解决scheme是添加一个新的UIView子类。 像LineView extends UIView东西LineView extends UIView ,然后使LineView我要绘制的行的确切尺寸,使用自己的drawRect方法填充它,然后将LineView的实例添加到MyView作为子视图。 这将允许我使用animation块对LineView对象的位置进行animation处理,但是实现如此简单的操作看起来过于复杂。

根据您的评论,将有数百个LineView实例,最好使用CALayer子类而不是UIView子类。 UIView对象给你事件处理,在iOS上,每个UIView拥有一个CALayer来处理它的渲染。 如果你不想/需要事件跟踪的个人行,所有这些UIView实例可能是无用的开销。 您可以访问父级UIView的图层,并根据需要添加行子图层。

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