objective-c - 在 View 的不同位置随机生成动画

标签 objective-c ios xcode animation

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

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

谢谢

-(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];*/

}

最佳答案

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

它看起来像:

-(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]; }];
}

关于objective-c - 在 View 的不同位置随机生成动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941002/

相关文章:

ios - "if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) "有什么意义

ios - 多个应用程序在后台运行时的内存警告

ios - Apple Mach-O 链接器错误 armv7s & libGoogleAdMobAds.a

xcode - Swift 和 scriptingbridge 对象初始化

objective-c - cocoa 图片库窗口

ios - abc.xcodeproj打不开,因为工程文件无法解析

objective-c - 如何在等待 NSURL 连接完成时阻止 objective-c 方法的执行?

iOS objective-c : how to set and ImageView from an URL

ios - 更新导航栏中的后退按钮

ios - 加载 GAX 客户端是什么意思?这是一个错误吗?