我正在尝试为UIImageview设置动画以使其在屏幕上随机移动。对于一个UIImageView,它工作正常。但是对于两个或多个对象,它不起作用。谁能帮我?

-(void)animationLoop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1];
    CGFloat x = (CGFloat) (arc4random() % (int) self.view.bounds.size.width);
    CGFloat y = (CGFloat) (arc4random() % (int) self.view.bounds.size.height);
    CGPoint squarePostion = CGPointMake(x, y);
    image.center = squarePostion;
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];
    [UIView commitAnimations];
}


提前致谢

最佳答案

最初,当您要启动动画时,请如下所示启动动画。

NSNumber *number1 = [NSNumber numberWithInt:0];
[UIView beginAnimations:nil context:number1];
[UIView setAnimationDuration:2.0];
CGFloat x = (CGFloat) (arc4random() % (int) self.view.bounds.size.width);
CGFloat y = (CGFloat) (arc4random() % (int) self.view.bounds.size.height);
CGPoint squarePostion = CGPointMake(x, y);
imgView1.center = squarePostion;
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];
[UIView commitAnimations];


number1 = [NSNumber numberWithInt:1];
[UIView beginAnimations:nil context:number1];
[UIView setAnimationDuration:2.0];
x = (CGFloat) (arc4random() % (int) self.view.bounds.size.width);
y = (CGFloat) (arc4random() % (int) self.view.bounds.size.height);
squarePostion = CGPointMake(x, y);
imgView2.center = squarePostion;
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];
[UIView commitAnimations];


您的animationLoop:finished:context:方法应如下所示。

-(void)animationLoop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    [UIView beginAnimations:nil context:context];
    [UIView setAnimationDuration:2.0];
    CGFloat x = (CGFloat) (arc4random() % (int) self.view.bounds.size.width);
    CGFloat y = (CGFloat) (arc4random() % (int) self.view.bounds.size.height);
    CGPoint squarePostion = CGPointMake(x, y);

    int i = [(NSNumber*)context intValue];
    if( i == 0 )
    {
        imgView1.center = squarePostion;
    }
    else
    {
        imgView2.center = squarePostion;
    }
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];
    [UIView commitAnimations];
}


进行上述更改并尝试。您将获得所需的东西。

09-28 00:21