0

我正在尝试学习如何为我在自定义视图中创建的圆的运动设置动画。但是,在 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];
    }
}
4

2 回答 2

2

-(void)moveCircle

您应该创建一个核心动画(带有块)并将视图的中心属性设置为动画。

于 2013-08-12T17:32:18.830 回答
-1

您应该在 for() 循环的迭代之间添加一个暂停。

于 2013-08-12T17:29:29.510 回答