学习练习--IOS雪花飘落的实现方法
方法一:利用NSMutableArray来实现
NSMutable *array;全局变量,在.m文件中用定时器调用
-(void)down{ static int jianGe = 0; jianGe++; if (jianGe > 2) { jianGe = 0; [self snowState]; } [self snowDown]; } -(void)snowState{ for (int i = 0; i < [array count]; i++) { MyImageView *img = [array objectAtIndex:i]; if (img.tag == 0) { img.tag = 1; [self.view addSubview:img]; break;//提取雪花单片 } } } -(void)snowDown{ for (int i = 0; i < [array count]; i++) { MyImageView *img = [array objectAtIndex:i]; if (img.tag == 1) { img.center = CGPointMake(img.center.x, img.center.y+10); if (img.center.y > 480+25) { img.tag = 0; img.center = CGPointMake(arc4random()%370 - 50, -50); } } } }
方法二:利用帧动画
用定时器调用
//ViewController.m -(void)snowDown{//动画效果 UIImageView *iv = [[UIImageView alloc]init]; int a = arc4random()%51;//雪花大小随机(0~50) iv.frame = CGRectMake(arc4random()%370 - 50, -50, a, a); iv.image = [UIImage imageNamed:@"flake"]; [self.view addSubview:iv]; [UIView beginAnimations:nil context:(__bridge void *)(iv)]; [UIView setAnimationDuration:5]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; iv.frame = CGRectMake(arc4random()%370 - 50, 440, a, a); [UIView commitAnimations]; } -(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context//到底部消除 { UIImageView *image = (__bridge UIImageView *)context; [image removeFromSuperview]; }
帧动画比用NSMutableArray要简洁,易懂
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。