#define SNOW_IMAGENAME         @"snow"

#define IMAGE_X                arc4random()%(int)Main_Screen_Width
#define IMAGE_ALPHA ((float)(arc4random()%10))/10
#define IMAGE_WIDTH arc4random()%20 + 10
#define PLUS_HEIGHT Main_Screen_Height/25 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_imagesArray = [[NSMutableArray alloc] init];
for (int i = ; i < ; ++ i) {
UIImageView *imageView = [[UIImageView alloc] initWithImage:IMAGENAMED(SNOW_IMAGENAME)];
float x = IMAGE_WIDTH;
imageView.frame = CGRectMake(IMAGE_X, -, x, x);
imageView.alpha = IMAGE_ALPHA;
[self.view addSubview:imageView];
[_imagesArray addObject:imageView];
}
[NSTimer scheduledTimerWithTimeInterval:. target:self selector:@selector(makeSnow) userInfo:nil repeats:YES];
} static int i = ;
- (void)makeSnow
{
i = i + ;
if ([_imagesArray count] > ) {
UIImageView *imageView = [_imagesArray objectAtIndex:];
imageView.tag = i;
[_imagesArray removeObjectAtIndex:];
[self snowFall:imageView];
} } - (void)snowFall:(UIImageView *)aImageView
{
[UIView beginAnimations:[NSString stringWithFormat:@"%i",aImageView.tag] context:nil];
[UIView setAnimationDuration:];
[UIView setAnimationDelegate:self];
aImageView.frame = CGRectMake(aImageView.frame.origin.x, Main_Screen_Height, aImageView.frame.size.width, aImageView.frame.size.height);
NSLog(@"%@",aImageView);
[UIView commitAnimations];
} - (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:[animationID intValue]];
float x = IMAGE_WIDTH;
imageView.frame = CGRectMake(IMAGE_X, -, x, x);
[_imagesArray addObject:imageView];
}

// 来自Code4App上的一个Demo

IOS 下雪动画的更多相关文章

  1. IOS 下雪动画修改版本

    #define SNOW_IMAGENAME @"snow" #define IMAGE_X arc4random()%(int)Main_Screen_Width #define ...

  2. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

  3. IOS 核心动画之CAKeyframeAnimation - iBaby

    - IOS 核心动画之CAKeyframeAnimation - 简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation ...

  4. iOS各种动画效果

    ios各种动画效果 最普通动画: //开始动画 [UIView beginAnimations:nil context:nil];  //设定动画持续时间 [UIView setAnimationDu ...

  5. IOS之动画

    IOS之动画   15.1 动画介绍 15.2 Core Animation基础 15.3 隐式动画 15.4 显式动画 15.5 关键帧显式动画 15.6 UIView级别动画 15.1 动画介绍 ...

  6. IOS 动画专题 --iOS核心动画

    iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...

  7. ios 学习动画的套路 (一)

    你也肯定喜欢炫酷的动画! 在APP中,动画就是一个点睛之笔!可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟~不知道从哪里下手去写!会连续的 ...

  8. Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画

    转自:https://www.cnblogs.com/zamhown/p/6688369.html 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画 ...

  9. 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画

    前段时间听部门老大说,Airbnb出了个移动端的动画库Lottie,可以和一个名叫Bodymovin的AE插件结合起来,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形 ...

随机推荐

  1. js jquery 验证写法

    <?php header("Content-type: text/html; charset=utf-8"); ?> <script src="jque ...

  2. 判断一个key 是否在map中存在

    public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-gener ...

  3. 使用cx_Freeze 将python3代码打包成.exe程序

    在这里分享一下如何在py3下使用cx_Freeze打包pyqt5的程序 首先吐槽下,深深鄙视一下百度,各种百度各种没有,之前我在py2.7下使用pyqt4开发过一个小软件,用的是py2exe进行打包的 ...

  4. C++中,访问字符串的三种方法

    1.用字符数组存放一个字符串 程序1:定义一个字符数组并初始化,然后输出其中的字符串. #include<iostream> using namespace std; int main() ...

  5. mysql 使用游标进行删除操作的存储过程

    BEGIN   DECLARE  hprocessInstanceId bigint DEFAULT 0; -- 历史流程实例id   DECLARE  hprocessInstanceIdStart ...

  6. Android加载图片OOM错误解决方式

    前几天做项目的时候,甲方要求是PAD (SAMSUNG P600 10.1寸 2560*1600)的PAD上显示高分辨率的大图片. SQLITE採用BOLD方式存储图片,这个存取过程就不说了哈,网上一 ...

  7. mvc分页生成静态页,mvc生成静态页

    http://blog.csdn.net/xxj_jing/article/details/7899125 分页生成静态页 http://www.cnblogs.com/luanyilin/archi ...

  8. UNION ALL

    select field1,field2,field3,field4 from table1 where ... UNION ALL select field1,field2,field3,field ...

  9. React-Native OpenGL体验二

                                  搞了一下午,终于做了几个Demo出来,下面我就说一下我对React-Native下的OpenGL的流畅度的体验吧. 我使用的测试机是坚果手机 ...

  10. FOR UPDATE SKIP LOCKED

    SYS_UNIT 中有UNIT_ID 0000000001 0000000002 0000001100 原意为若启用多线程,则每个线程在获取时仅可以获取一条数据(互斥) 脚本如下 1.SELECT * ...