animationUIView的CoreGraphics / drawRect内容
是否有可能animationUIView
的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的子类的左边画一条垂直线。 现在有一个简单的方法来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。