六、雪花《苹果iOS实例编程入门教程》
该app为应用的功能为制作一场雪景
现版本 SDK 8.4 Xcode
纲要:
- UIImageView 的运用
- onTimer 代码运用
- onAnimation 代码运用
运行Xcode 选择 Create a new Xcode project ->Single View Application 命名 SnowFall
(1) 在xCode打开 ViewController.h 文件
(红色为所添加的代码)
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController{
UIImage *flakeImage;
}
@property(nonatomic,retain)UIImage *flakeImage;
-(void)onTimer;
-(void)onAnimationComplete:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;
@end
(2) 在xCode打开 ViewController.m 文件
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize flakeImage;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// RGB和alpha值的范围是0~1 Alpha透明度
// 把背景颜色设置为冷色
self.view.backgroundColor = [UIColor colorWithRed:0.5 green:0.5 blue:1.0 alpha:1.0];
// 导出雪花图片
flakeImage = [UIImage imageNamed:@"flake.png"];
// 每秒二十次的调用onTimer事件
[NSTimer scheduledTimerWithTimeInterval:(0.05) target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
-(void)onTimer
{
//建立一个ImageView 放置雪花图片 flake image
UIImageView *flakeView = [[UIImageView alloc]initWithImage:flakeImage];
//随即生成参数坐标
int startX = round(random()%320);
int endX = round(random()%320);
double scale = 1/round(random()%100)+1.0;
double speed = 1/round(random()%100)+1.0;
//设置雪花图片出现的坐标和透明度 即控制UIView的大小和该UIView在superview中的相对位置、透明度 基准为左上角
flakeView.frame = CGRectMake(startX, -100.0, 25.0*scale, 25.0*scale);
flakeView.alpha = 0.25;
//将flakeView添加进主视图
[self.view addSubview:flakeView];
//在 Objective-C 和 Core Foundation 对象之间进行转换时,就需要使用 Bridge cast(待详细研究)
[UIView beginAnimations:nil context:(__bridge void *)(flakeView)];
//动画时常
[UIView setAnimationDuration:5*speed];
//动画结束 图片位置
flakeView.frame = CGRectMake(endX, 500.0, 25.0*scale, 25.0*scale);
//*1*动画结束时调用 清理flakeView
[UIView setAnimationDidStopSelector:@selector(onAnimationComplete:finished:context:)];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
}
-(void)onAnimationComplete:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{
UIImageView *flakeView = (__bridge UIImageView *)(context);
[flakeView removeFromSuperview];
// NSLog(NSString stringWithFormat:@"[flakeView retainCount] = %d", [flakeView retainCount]]);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
(3) 导入下面图片文件
下载下面图片,放入 SnowFall 文件夹内并命名为下面名称
flake.png
选择: File -> Save
最后在 xCode 选择 Build and then Running
(4)模拟器效果图
保留*1*处代码即动画结束后清理flake view效果为

不保留*1*处代码,效果为

本文源于网上博客教程,经过本人修改和测试。原blog地址 http://blog.sina.com.cn/s/blog_5fae23350100e1uk.html
六、雪花《苹果iOS实例编程入门教程》的更多相关文章
- 五、点数器《苹果iOS实例编程入门教程》
该app为应用的功能为一个简单的数数程序 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Applic ...
- 四、卫星定位《苹果iOS实例编程入门教程》
该app为应用的功能为用iPhone 显示你现在的位置 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View ...
- 三、图像移动《苹果iOS实例编程入门教程》
该app为应用的功能为动态移动动画 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Applicati ...
- 二 、打开地图《苹果iOS实例编程入门教程》
该app为应用的功能为给你的iPhone打开google地图有效地址连接 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Si ...
- 一、午夜倒数《苹果iOS实例编程入门教程》
该app为应用的功能为计算离午夜12:00点的剩余时间 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View ...
- 七、考反映小游戏《苹果iOS实例编程入门教程》
该app为应用的功能为一个简单的考反应游戏 纲要:-UIButton, UILabel, UIImageView 的运用:-利用rendom增加游戏可玩性: 游戏说明: 在按下开始游戏后,分为三盏的指 ...
- 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!
C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征. 如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...
- VS2010/MFC编程入门教程之目录和总结
鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容 ...
- (转)VS2010-MFC编程入门教程之目录和总结
目前该教程可以到鸡啄米编程课堂去学习,阅读体验更好,更适合在线学习. 原文目录及链接: 一.VS2010/MFC编程入门教程之目录 第一部分:VS2010/MFC开发环境 VS2010/MFC编程入 ...
随机推荐
- 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务
一.数据库事务的概念: 数据库的ACID特征:Atomic.Consistency.Isolation.Durability.原子性.一致性.隔离性.持久性.不同的隔离级别引发的不同问题. 事务的AC ...
- Java Socket编程示例
一.Socket简介: 1.什么是Socket 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket ...
- angular入门
angular入门 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...
- 在VS 2015中边调试边分析性能
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 对代码进行性能分析,之前往往是一种独立的Profiling过程,现在在VS 2015中可以结 ...
- RTP 与RTCP 解释. 含同步时间戳
转自:http://blog.csdn.net/wudebao5220150/article/details/13816225 RTP协议是real-time transport protocol的缩 ...
- Vs2012调试本地windows服务
背景: 在我的工作经历中,我用到了一个我们以前学习中没有接触过的老东西-服务.之所说以前没有接触过,是因为自己没有系统的研究过这东西:之所以又说它是老东西,是因为我们其实早就知道他的存在,经常用它去干 ...
- Jquery禁止/恢复按钮与文本框代码
最近,加入了一个小项目,由浩哥带领我们几个人一起开发一个东西.幸运的是,我和胡志婷分到了一组,她可是一个具有丰富经验的牛人,对我也很好,哈哈. --背景 说点正事,最近,我们在进行项目的时候,提到了一 ...
- 【前台 】字符串和js对象的相互转化
利用原生JSON对象,将对象转为字符串 var jsObj = {}; jsObj.testArray = [1,2,3,4,5]; jsObj.name = 'CSS3'; jsObj.date = ...
- C#中Invoke的用法()
invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...
- iOS10 UI教程禁用视图与用户的交互
iOS10 UI教程禁用视图与用户的交互 在上文中我们提到了使用isHidden属性和alpha属性可以使视图与用户的交互被禁用,除此之外此功能还可以使用UIView的isUserInteractio ...