#import "ViewController.h"
#define FPS 30
#define MAX_SIZE 10
#define MAX_DURATION 2
#define MAX_SETOFF 100
@interface ViewController ()
@property (assign,nonatomic)NSUInteger times;
@end
@implementation ViewController
-(void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
[NSTimerscheduledTimerWithTimeInterval:1/FPStarget:selfselector:@selector(appear:)userInfo:nilrepeats:YES];
}
//每调用一次,生成一片雪花
-(void)appear:(NSTimer*)sender{
//1.创建雪花对象,设置位置和大小,加入父视图
UIImageView *snow=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"snow" ]];
CGFloat size=arc4random()%MAX_SIZE +20;
NSInteger viewWidth=self.view.bounds.size.width;
NSInteger snowCenterX=arc4random()%viewWidth;
snow.frame=CGRectMake(snowCenterX, -30, size, size);
[self.viewaddSubview:snow];
CGPoint center=snow.center;
center.y+=500;
center.x+=arc4random()%MAX_SETOFF-50;//雪花最终的位置
CGAffineTransform transform=CGAffineTransformMakeRotation(M_PI*(arc4random()%10));//雪花下落过程随机旋转的角度
CGFloat alpha=0;//雪花最后的透明度
[UIViewanimateWithDuration:arc4random()%MAX_DURATION+5
delay:0
options:
UIViewAnimationCurveEaseIn|UIViewAnimationOptionShowHideTransitionViews
animations:^{
snow.transform=transform;
snow.center=center;
}
completion:^(BOOL finished) {//掉落动作结束后,添加新动作
[UIViewanimateWithDuration:1
delay:0
options:UIViewAnimationOptionCurveLinear//雪花匀速彼岸花
animations:^{
snow.alpha=alpha;//使雪花透明度为0
}
completion:^(BOOL finished) {
[snowremoveFromSuperview];//从父视图中删除雪花
}];
}];
}
@end