1

您好,我是动画新手,最近才开始玩它。我想显示一个从小环到大环的圆圈(环),消失,然后重新执行该过程,除非在不同的位置。

为此,我为同一个环创建了 6 个不同的图像尺寸。以下代码是我如何完成的,但我不知道如何重复该过程(AkA 它运行该方法但环的位置保持不变,我需要循环随机数生成器但不知道何时检查图像是否已停止)。如果这不是解决此问题的正确方法,请告诉我!PS 当它到达最大的舞台时,戒指看起来很丑,不知道为什么。

谢谢

-(void) doWork
{

NSInteger number;
NSInteger number2;
NSLog (@"here");

number = (arc4random()%100)+1; 
number2 = (arc4random()%100)+1; 
 NSLog (@" hello numer1: %d", number);
 NSLog (@" hello numer2: %d", number2);

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(number, number2, 135, 135)]; 

imageView.animationImages= [NSArray arrayWithObjects:
                            [UIImage imageNamed:@"smallestRing.png"],
                            [UIImage imageNamed:@"smallRing.png"], 
                            [UIImage imageNamed:@"mediumRing.png"],
                            [UIImage imageNamed:@"large2Ring.png"],
                            [UIImage imageNamed:@"largeRing.png"], nil]; 

imageView.animationDuration= 2.5;
imageView.animationRepeatCount= 0;
imageView.contentMode = UIViewContentModeScaleAspectFit;

[imageView startAnimating];
[self.view addSubview:imageView];

/*[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(doWork) userInfo:nil repeats:YES];*/

}
4

2 回答 2

1

如果调整大小(或其他变换,如旋转或过渡)是您需要的唯一动画,您可以使用方法 +animateWithDuration(您可以在此处找到描述)

它看起来像:

-(void) doWork
{

NSInteger number;
NSInteger number2;
NSLog (@"here");

number = (arc4random()%100)+1; 
number2 = (arc4random()%100)+1; 
 NSLog (@" hello numer1: %d", number);
 NSLog (@" hello numer2: %d", number2);

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(number, number2, 135, 135)]; 

imageView.image = [UIImage imageNamed:@"largeRing.png"];
[self.view addSubview:imageView];

[self animate:imageView enlarge:YES];
}

-(void) animate:(UIImageView*)imageView enlarge:(BOOL)flag
{
if (flag) 
{
// then animating is starting
// and imageView will appear in random point of view
    int randomX = arc4random()%self.view.frame.size.width;
    int randomY = arc4random()%self.view.frame.size.height;
    imageView.center = CGPointMake(randomX, randomY);
}

double scale = flag ? 2 : 0.5;
[UIView animateWithDuration:5
         animations:^{ imageView.transform = CGAffineTransformMakeScale(scale,scale); }
         completion:^(BOOL finished){ [self animate:imageView: enlarge:!flag]; }];
}
于 2012-06-07T23:12:05.907 回答
1

可以查询 bool isAnimating 来判断 UIImageView 的动画是否结束

PS:可能它看起来很丑,因为

imageView.contentMode = UIViewContentModeScaleAspectFit;

尝试类似的东西

imageView.contentMode = UIViewContentModeCenter;
于 2012-06-07T23:28:23.177 回答