我正在尝试学习如何为我在自定义视图中创建的圆的运动设置动画。但是,在 startMovingCircle 循环期间,圆圈不显示,仅在循环结束时出现。我认为如果我每次调用 setNeedsDisplay 都应该重绘视图并且应该显示移动圆圈的动画。有人可以告诉我我做错了什么吗?
另外,我想问一下这样编程动画是否正确,或者我应该使用CoreAnimation,有什么好处?CoreAnimation 能否为在 CoreGraphics 中编程的圆形、椭圆、矩形等形状设置动画?
我的绘图视图.m:
-(id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
xCoordinate = 100.0;
yCoordinate = 100.0;
speed = 1.0;
}
return self;
}
- (void)drawRect:(CGRect)rect
{
NSLog(@"Drawing");
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGContextBeginPath(myContext);
CGContextAddArc(myContext, xCoordinate, yCoordinate, 20.0, 0.0, 2 * M_PI, 0);
CGContextClosePath(myContext);
CGContextSetLineWidth(myContext, 1);
CGContextSetStrokeColorWithColor(myContext, [UIColor whiteColor].CGColor);
CGContextStrokePath(myContext);
}
-(void)moveCircle{
xCoordinate += speed;
yCoordinate += speed;
NSLog(@"Moving circle. X: %f, Y: %f", xCoordinate, yCoordinate);
[self setNeedsDisplay];
}
MyDrawingViewController.m:
-(void)startMovingCircle{
for(int i = 0; i < 1000; i++){
[myView moveCircle];
}
}