是否可以为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
对象的位置设置动画,但实现这么简单的事情似乎过于复杂。
答案 0 :(得分:0)
根据您的评论,将会有数百个LineView实例,最好使用CALayer子类而不是UIView子类。 UIView对象为您提供事件处理,在iOS上,每个UIView都拥有一个CALayer来处理它的渲染。如果您不希望/需要对各个行进行事件跟踪,那么所有这些UIView实例可能都是不必要的开销。您可以访问父UIView的图层,并根据需要添加行子图层。
如果我正确理解您的问题,则不需要CoreGraphics。您可以设置线图层' backgroundColor来处理填充。或者,如果线条不直,您可以使用CAShapeLayer渲染线条的路径。