一、导论
1、社区
(1)Apple官方资源
·Mac APP Store
·Xcode文档库
·iOS Dev Center
·http://developer.apple.com
(2)第三方
·stackoverflow
·ourcoders/cocoachina/v2ex
·github
2、课程目标
(1)入门:熟悉iOS界面制作
(2)进阶:理解iOS应用开发、具备从事iOS应用开发工作的基础、具备自主学习的基础
3、学习要求
(1)学习:认真观看视频、在理解的基础上整理学习笔记
(2)练习:在不看视频的情况下,将演示的例子做一遍、完成课后要求的练习、选做的练习也尽可能多做
(3)时间:学习+练习预计至少占用每天两个小时的时间。
4、参考资料
(1)http://www.oreilly.com/pub/au/249
(2)iOS7 programming
(3)官方指南、WWDC视频。
二、HelloiOS
1、Xcode使用
(1)New Project
(2)Xcode界面简介
(3)Interface Builder简介
(4)在模拟器中运行
(5)在真实设备上运行
2、APP基本概念
(1)iOS APP的代码结构
·main()
·UIApplicationMain()
·UIApplication对象
·UIApplicationDelegate
(2)iOS APP运行环境
·Sandbox
·运行期目录结构:NSHomeDirectory()
3、Bundle
(1)iOS应用是一个Bundle
·Bundle:带有Info.plist的目录
·NSBundle类
·mainBundle
·resource bundle和framework
三、Button
1、会打招呼的应用
2、界面与代码分离
可以只用代码来描绘界面及响应用户的操作,但是不直观且调整麻烦
iOS使用Interface Builder来描绘界面,保存到xib文件中。
用代码来更新界面、响应用户操作,保存在m文件中。
3、outlet
(1)为了让代码能应用nib中的对象,需要代码里有一个变量来引用界面对象,在界面对象创建后给这个变量赋值。
(2)outlet:IBOutlet标记的变量
(3)outlet connection
4、action connection
5 、Demo
在Interface Builder中制作界面,只需要拖动所需的界面对象到Interface Builder中即可,在ViewController中添加响应代码
6、UIButton
7、代码创建UIButton
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:[UIImage imageNamed:@"okbtn"]forState:UIControlStateNormal];
[btn setTitle:@"OK"forState:UIControlStateNormal];
[btn addTarget:selfaction:@selector(greeting:)forControlEvents:UIControlEventTouchUpInside];
event mask:UIControlEventTouchUpInside|UIControlEventTouchOutside
四、image
1、Assert Catalog
Assert Catalog是一个图片管理器,针对不同的iOS设备,可视化的管理不同的分辨率。
(1)打开xcode后选择Asserts.xacssets用来编辑图片。
(2)Asserts.xacssets的编辑区里有Appicon,这是程序显示在设备上的图标。
(3)矢量图:可以无限放大,不变色,不模糊。
2、UIImageView
用UIImageView在Interface Builder显示图片,UIImageView有很多不同属性可以根据需求设置
(1)加载App bundle中的图片
1、image = [UIImage imageNamed:@"mypic"];
2、image = [UIImage imageNamed:@"mypic"inBundle:nil compatibleWithTraitCollection:nil];
3、NSURL *url = [[NSBundle mainBundle]URLForResource:@"mypic"withExitension:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:path];
UIImage *image = [UIIMage imageWithData:data];
(2)加载动画
将一段连续的图片加载到App Bundle中,命名由相同名字+数字
五、猜城市
六、猜城市代码解释
(1)控制界面刷新的ViewController不应该放入业务逻辑,只负责从页面上拿信息和更新页面的状态,应该新建一个类来描述游戏逻辑
(2)#pragma mark预处理器文法用来查找和导航代码用,在代码编辑器的导航栏插入我们想要的标题。
(3)id和instancetype都可以作为方法的返回类型,instancetype可以返回和方法所在类相同的对象,id只能返回未知类型的对象。