新書推薦:
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:HK$
90.9
《
以爱为名的支配
》
售價:HK$
64.4
《
台风天(大吴作品,每一种生活都有被看见的意义)
》
售價:HK$
55.2
《
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
》
售價:HK$
66.1
《
新时代硬道理 广东寻路高质量发展
》
售價:HK$
79.4
《
6S精益管理实战(精装版)
》
售價:HK$
103.3
《
异域回声——晚近海外汉学之文史互动研究
》
售價:HK$
112.7
《
世界文明中的作物迁徙:聚焦亚洲、中东和南美洲被忽视的本土农业文明
》
售價:HK$
102.4
|
內容簡介: |
本书通过在30天中制作基于iPhone
SDK的29个精选的应用程序案例,系统、全面地介绍了Object-C编程语言、Xcode和Interface
Builder开发工具,如各种iPhone应用程序项目模板的开发流程原理和控件、实例、框架以及Object-C编程的基本知识,所有这些包含在覆盖面广、紧密联系的每一个章节之中。各个章节都提供应用程序的详细构建步骤,包括应用程序的输出和代码的分析。在每章结束前都提供一个举一反三的练习,以帮助读者加深理解所学的内容和评估学习的进展程度。
本书分为三个部分,详细地讲解了iPhone
SDK中的每一个模板,从基础知识到面向对象的技术,应有尽有。第一部分从第1天至第17天,深入介绍控件的基本特性,使用View-based
Application项目模板开发简单的应用程序,其中包括标签、按钮、文本框、网页视图、开关、提示框、页面控制等控件的交互运用,以及如何使用Navigation-based
Application项目模板开发表格视图应用程序;第二部分从第18天至第22天,介绍在应用程序中如何灵活播放声音,以及如何使用Tab
Bar
Application项目模板开发多种媒体切换播放,其中包括网页、音乐和视频媒体;第三部分从第23天至第30天,介绍iPhone
OS的高级特性。使用Windows-based Application项目模板添加视图动画对象,并且使用Utility
Application项目模板开发结合声音播放和交互操作的动态应用程序。
本书可作为没有任何编程经验的初学者学习iPhone
SDK的教材,在30天中由浅入深地学习每一个案例及所使用的控件和代码,使读者通过实践能逐步进入iPhone
SDK软件开发行列。
|
目錄:
|
第1天 Mac OS和iPhone SDK简介
1.1 iPhone SDK 和Xcode的使用与安装
1.2 Xcode使用简介
1.2.1 创建iPhone OS项目
1.2.2 项目程序模板简介
1.2.3 项目开发界面
1.2.4 项目工具栏简介
1.2.5 显示开发代码行数
1.2.6 以_Prefix.pch为后缀的文件对象
1.2.7 main.m入口衔接程序文件
1.3 Interface Builder使用简介
1.3.1 关于Nib和Xib文件
1.3.2 图形开发环境概述
1.4 Simulator使用简介
1.4.1 在iPhone SDK 环境下运行SDK 或SDK 的应用程序
1.5 小结和练习
第2天 第一个程序“Hello World”
2.1 View-based Application的初次应用
2.2 AppDelegate class文件简介
2.2.1 UIKit框架的作用
2.2.2 AppDelegate.h
2.2.3 AppDelegate.m
2.3 视图控制器文件
2.3.1 ViewController.h
2.3.2 ViewController.m
2.3.3 对象属性中的nonatomic和retain
2.4 ViewController.xib文件引导Interface Builder
2.4.1 设置视图界面的背景颜色
2.4.2 添加Label到视图中
2.5 程序的运行和保存
2.6 添加iPhone应用程序图标
2.7 小结和练习
第3天 打开网站URL连接
3.1 View-based Application的网页连接项目
3.1.1 构建按钮方法打开URL数据
3.1.2 文字格式的转换NSStringstringWithFormat
3.1.3 网站连接的内容NSURL
3.1.4 打开网站的连接UIApplicationsharedApplication
3.1.5 Foundation框架的作用
3.2 建立按钮操作方法视图控制器
3.3 使用Interface Builder构建按钮控件
3.3.1 按钮Round Rect Button特性的文字输入
3.3.2 按钮Round Rect Button的大小和位置设置
3.3.3 按钮Round Rect Button的连接设置
3.4 小结和练习
第4天 设置文件Setting Bundle
4.1 在View-based Application中的自定义设置
4.1.1 把Setting Bundle加入程序
4.1.2 Root.plist文件的内容添加
4.1.3 使用NSUserDefaults获取自定义数据
4.2 获取自定义设置数据视图控制器
4.2.1 建立UILabel对象
4.2.2 定义UILabel对象的属性值
4.3 使用Interface Builder构建标签控件
4.3.1 标签Label大小和位置的设置
4.3.2 标签Label的文字显示特性设置
4.3.3 标签Label与File’s Owner的连接
4.3.4 虚拟iPhone系统的Simulator设置
4.4 小结和练习
第5天 文字的长度
5.1 View-based Application的控件交互项目
5.1.1 控件属性值中的变量
5.1.2 条件假定语句if和else
5.2 统计文字长度的视图控制器
5.2.1 建立UITextField、UILabel对象和IBAction
5.2.2 定义交互控件属性值的按钮操作方法
5.3 使用Interface Builder构建交互控件
5.3.1 添加交互控件和特性设置
5.3.2 交互控件的大小和位置设置
5.3.3 交互控件与File’s Owner的连接
5.4 小结和练习
第6天 移动网站导航
6.1 View-based Application的打开网站项目
6.1.1 向网站发送一个指定内容要求NSURLRequest
6.1.2 字符串的格式转换NSASCIIStringEncoding
6.2 显示网站内容的交互方法
6.2.1 建立UIWebView对象和IBAction方法
6.2.2 定义UIWebView对象属性值的IBAction的操作方法
6.3 使用Interface Builder构建显示网站内容
6.3.1 添加导航控件和特性设置
6.3.2 导航控件的大小和位置设置
6.3.3 导航控件的连接设置
6.4 小结和练习
第7天 长度单位换算器
7.1 View-based Application的文本框交互项目
7.1.1 捕获屏幕触摸事件UIViewtouch
7.2 单位换算的交互方法
7.2.1 建立多个UITextField对象和IBAction方法
7.2.2 定义交互UITextField对象属性值的操作方法
7.3 使用Interface Builder构建换算器控件
7.3.1 添加换算器控件和特性设置
7.3.2 换算器控件的大小和位置设置
7.3.3 换算器控件的连接设置
7.4 小结和练习
第8天 分歧解决器
8.1 View-based Application的事件数值交互项目
8.1.1 条件语句switch与case
8.2 算法机率交互方法
8.2.1 建立UILabel和多个IBAction方法
8.2.2 定义交互Label的属性值的操作方法
8.3 在Interface Builder中构建分歧解决器控件
8.3.1 添加分歧解决器控件和特性设置
8.3.2 分歧解决器控件的大小和位置设置
8.3.3 分歧解决器控件的连接设置
8.4 小结和练习
第9天 密码生成器
9.1 View-based Application的开关交互项目
9.1.1 宏定义#define
9.1.2 随机数random和srandom
9.1.3 逻辑对象BOOL
9.1.4 循环语句for loop
9.1.5 字符串中字符的位置NSRange
9.1.6 整数数据类型定义NSInteger
9.1.7 字符串的范围NSString StingWithRange
9.2 随机数交互方法
9.2.1 建立UISwitch、UITextField对象和IBAction方法
9.2.2 定义交互Switch与TextField属性值的操作方法
9.3 在Interface Builder中构建密码生成器控件
9.3.1 添加密码生成器控件和特性设置
9.3.2 密码生成器控件的大小和位置设置
9.3.3 密码生成器控件的连接设置
9.4 小结和练习
第10天 迷你秒表
10.1 View-based Application的时间变量交互项目
10.1.1 定时器NSTimer
10.2 时间变量视图控制器
10.2.1 建立NSTimer、UILabel对象和IBAction方法
10.2.2 定义交互NSTimer与UILabel属性值的操作方法
10.3 在Interface Builder中构建秒计时控件
10.3.1 添加秒计时控件和特性设置
10.3.2 秒计时控件的大小和位置设置
10.3.3 秒计时控件的连接设置
10.4 小结和练习
第11天 点数器
11.1 View-based Application的算术方法项目
11.1.1 条件语句if结合运算
11.2 算术的视图控制器
11.2.1 建立NSInteger、UILabel对象和IBAction方法
11.2.2 定义NSInteger与UILabel属性值的操作方法
11.3 在Interface Builder中构建点数控件
11.3.1 添加点数控件和特性设置
11.3.2 点数控件的大小和位置设置
11.3.3 点数控件的连接设置
11.4 小结和练习
第12天 考反应扑克游戏
12.1 View-based Application的提示框交互项目
12.1.1 提示框UIAlertView的使用
12.1.2 保存时间值NSDate
12.1.3 在游戏中添加图像文件
12.2 时间差视图控制器
12.2.1 建立NSData、UIImageView对象和IBAction方法
12.2.2 定义UIAlertView和游戏控件属性值的操作方法
12.3 在Interface Builder中构建扑克游戏控件
12.3.1 扑克游戏控件的添加
12.3.2 游戏背景视图的检查器设置
12.3.3 游戏扑克图像的检查器设置
12.3.4 游戏透明按钮的检查器设置
12.4 小结和练习
第13天 页面控制
13.1 View-based Application的页面控制项目
13.1.1 添加显示在页面中的图像文件
13.1.2 视图的实例方法addSubview和removeFromSuperview
13.2 多页面视图控制器
13.2.1 建立UIPageControl方法
13.2.2 定义changePage视图操作方法
13.3 在Interface Builder中构建子视图控件
13.3.1 视图控件的添加
13.3.2 视图控件的检查器设置
13.4 小结和练习
第14天 图片浏览器
14.1 View-based Application的滚动视图控制项目
14.1.1 常量定义const
14.1.2 数组数据类型定义NSArray
14.1.3 添加浏览器中的图像文件
14.2 滚动视图的视图控制器
14.2.1 建立UIScrollView对象
14.2.2 滚动视图的布局方法
14.3 在Interface Builder中构建滚动视图控件
14.3.1 添加滚动视图控件和特性设置
14.3.2 滚动视图控件的大小和位置设置
14.3.3 滚动视图控件的连接设置
14.4 小结和练习
第15天 小型表格
15.1 Navigation-based Application的初次应用
15.1.1 可修改式数组NSMutableArray
15.2 在InterfaceBuilder中为表格显示分组
15.3 RootViewController class文件
15.3.1 UITableView的分组数量设置
15.3.2 UITableView的分组标题内容设置
15.3.3 UITableView的行数设置
15.3.4 UITableView的每行内容设置
15.3.5 表格视图的UIBarButtonItem添加标题和编辑按钮
15.3.6 在表格视图的导航栏按钮中添加提示框
15.4 自定义表格应用程序
15.4.1 自定义RootViewController.h文件
15.4.2 自定义RootViewController.m文件
15.5 小结和练习
第16天 地址收藏器
16.1 Navigation-based Application的表格连接管理项目
16.1.1 添加UIViewController类
16.1.2 UITableView的表格单元触发页面视图
16.2 网址连接视图控制器
16.2.1 自定义RootViewController.h文件
16.2.2 自定义RootViewController.m文件
16.2.3 自定义DetailViewController.h文件
16.2.4 自定义DetailViewController.m文件
16.3 在Interface Builder中构建连接网址视图控件
16.3.1 添加网址视图控件和特性设置
16.3.2 网址视图控件的大小和位置设置
16.3.3 网址视图控件的连接设置
16.4 小结和练习
第17天 掌上老虎机
17.1 View-based Application的选择器游戏项目
17.1.1 添加选择器中项目的图像文件
17.1.2 UIPickerView的组成
17.2 老虎机的视图控制器
17.2.1 建立UIPickerView、UI Label、NSArray对象和IBAction方法
17.2.2 定义老虎机控件属性值的操作方法
17.3 在Interface Builder中构建老虎机游戏
17.3.1 添加老虎机游戏的控件和特性设置
17.3.2 老虎机游戏的控件大小和位置设置
17.3.3 老虎机游戏的控件连接设置
17.4 小结和练习
第18天 音乐播放器
18.1 View-based Application的声音播放项目
18.1.1 添加播放器的背景图像和声音文件
18.1.2 添加支持播放声音的框架
18.1.3 AVFoundation框架的作用
18.2 音乐播放器的视图控制器
18.2.1 建立AVAudioPlayer对象、播放和停止动态
18.2.2 定义播放器属性值的操作方法
18.3 在Interface Builder中构建音乐播放器
18.3.1 添加音乐播放器的控件和特性设置
18.3.2 音乐播放器的控件大小和位置设置
18.3.3 音乐播放器的控件连接设置
18.4 小结和练习
第19天 便携式电子琴
19.1 View-based Application的音频工具项目
19.1.1 屏幕横向显示程序的设置
19.1.2 添加电子琴的背景图像和声音文件
19.1.3 添加音频工具框架
19.1.4 Audio Toolbox框架的作用
19.2 电子琴的交互方法
19.2.1 建立音频文件播放方法和播放动态
19.2.2 定义琴键属性值的操作方法
19.3 在Interface Builder中构建电子琴
19.3.1 电子琴视图的背景色设置
19.3.2 横向显示Interface Builder
19.3.3 在Interface Builder中添加控件
19.3.4 电子琴背景图的检查器设置
19.3.5 电子琴键的检查器设置
19.4 小结和练习
第20天 DJ混音器
20.1 View-based Application中设置混音器项目
20.1.1 添加混音器的背景图像和声音文件
20.1.2 添加支持混音器播放声音的框架
20.2 混音器的交互方法
20.2.1 建立UISlider、UISwitch、AVAudioPlayer对象和交互方法
20.2.2 定义UISlider和UISwitch与声音播放器的交互
20.3 在Interface Builder内构建交互控件
20.3.1 添加混音器的控件和特性设置
20.3.2 混音器的控件大小和位置设置
20.3.3 混音器的控件连接设置
20.4 小结和练习
第21天 音乐选播器
21.1 View-based Application的音乐列表播放项目
21.1.1 添加音乐列表播放的背景图像和声音文件
21.1.2 添加支持音乐列表播放的框架
21.2 音乐列表播放的视图控制器
21.2.1 建立UIPicker View、UIProgress View与声音播放器
21.2.2 定义音乐列表播放的对象和操作方法
21.3 在Interface Builder中构建音乐播放列表
21.3.1 添加音乐播放列表的控件和特性设置
21.3.2 音乐列表播放的控件大小和位置设置
21.3.3 音乐列表播放的控件连接设置
21.4 小结和练习
第22天 多媒体切换器
22.1 Tab Bar Application的应用
22.1.1 删除UIViewController类文件
22.1.2 添加多媒体切换器的背景图像和声音文件
22.1.3 添加支持多媒体切换器的框架
22.1.4 MediaPlayer框架的作用
22.1.5 添加Tab页面控制器类
22.2 多媒体切换器的交互方法
22.2.1 构建URLView控制器
22.2.2 构建AudioView控制器
22.2.3 构建MovieView控制器
22.3 在Interface Builder中构建Tab视图
22.3.1 连接Tab页面控制器类
22.3.2 添加URL View页面的控件和检查器设置
22.3.3 添加AudioView页面的控件和检查器设置
22.3.4 添加MovieView页面的控件和检查器设置
22.4 小结和练习
第23天 移动的方块
23.1 Windows-based Application的应用
23.1.1 添加UIViewController类
23.1.2 添加支持移动的方块的框架
23.1.3 QuartzCore框架的作用
23.1.4 使用CGRect自定义UIWindow
23.1.5 使用CATransaction自定义控件的动态
23.2 自定义AppDelegate文件
23.3 实现图像的交互方法
23.4 小结和练习
第24天 璀璨的烟花
24.1 Utility Application的初次应用
24.1.1 添加烟花图像文件
24.1.2 添加支持关键帧动画的框架
24.1.3 关键帧动画
24.2 FlipsideView简介
24.2.1 FlipsideViewController.h
24.2.2 FlipsideViewController.m
24.3 在MainView中构建烟花动画
24.4 在Interface Builder中构建FlipsideView
24.5 小结和练习
第25天 无尽的雪花
25.1 Utility Application的随机图像动画
25.1.1 添加雪花图像文件
25.1.2 添加支持几何图形动画的框架
25.1.3 几何图形的生成
25.2 雪花几何图形的生成
25.2.1 建立UIImageView对象
25.2.2 定义图像的属性值交互onTimer方法
25.3 在Interface Builder中构建雪花简介副页
25.4 小结和练习
第26天 跳跃的皮球
26.1 在Utility Application的跳跃皮球项目
26.1.1 添加皮球图像文件
26.1.2 添加支持跳跃动画的框架
26.2 跳跃动画的主视图控制器
26.2.1 建立UIImageView和CGPoint对象
26.2.2 定义图像的属性值交互onTimer和轨迹动画方法
26.3 在Interface Builder中构建皮球图像主页
26.4 在Interface Builder中构建FlipsideView
26.5 小结和练习
第27天 十字方向键
27.1 Utility Application的图像移动按钮项目
27.1.1 添加吃豆人的移动图像和声音文件
27.1.2 添加支持吃豆人动画和声音文件的框架
27.2 移动图像操作的视图控制器
27.2.1 建立UIImageView、按钮方向操作和音频播放方法
27.2.2 定义图像属性值和方向操作交互
27.3 在Interface Builder中构建吃豆人主页
27.3.1 构建吃豆人图像和背景图像
27.3.2 构建吃豆人移动按钮
27.4 在Interface Builder中构建吃豆人简介副页
27.5 小结和练习
第28天 触屏移动
28.1 Utility Application的图像触屏移动项目
28.1.1 添加飞行物体的图像和声音文件
28.1.2 添加框架文件
28.1.3 捕获屏幕触摸点的位置坐标
28.2 触屏移动操作的视图控制器
28.2.1 建立UIImageView、CGPoint、触屏移动操作和音频播放方法
28.2.2 定义图像属性值和触屏移动操作交互
28.3 在Interface Builder中构建MainView
28.3.1 构建UFO图像
28.4 在Interface Builder中构建UFO简介副页
28.5 小结和练习
第29天 跳跃动作
29.1 Utility Application的游戏人物跳跃动作项目
29.1.1 添加游戏人物的图像和动作声音文件
29.1.2 添加支持游戏人物动画和声音文件的框架
29.1.3 设置显示横屏游戏
29.2 游戏人物跳跃动作的视图控制器
29.2.1 建立UIImageView跳跃按钮操作和音频播放方法
29.2.2 定义图像属性值和跳跃操作交互
29.3 在Interface Builder中构建跳跃动作主页
29.3.1 构建游戏人物和背景图像
29.3.2 构建游戏人物跳跃按钮
29.4 在Interface Builder中构建游戏简介副页
29.5 小结和练习
第30天 打砖块游戏
30.1 Utility Application的打砖块游戏
30.1.1 添加打砖块的图像和声音文件
30.1.2 添加框架文件
30.1.3 添加UIImageView控制器
30.1.4 自定义UIImageView视图检查器
30.2 打砖块的MainViewController交互方法
30.2.1 建立游戏分数控件、操作交互和音频播放方法
30.2.2 定义游戏的操作和属性值
30.3 在Interface Builder内构建BoardView
30.3.1 添加NSObject
30.3.2 NSObject的身份设置
30.4 在Interface Builder中构建打砖块游戏主页
30.5 在Interface Builder中构建打砖块简介副页
30.6 小结和再会
|
內容試閱:
|
第1天 Mac OS和iPhone SDK简介
Mac OS是苹果公司开发的用于苹果Macintosh系列的操作系统,它是一款非常成功的具有商用价值的操作系统,在Mac OS
10后进入Mac OS X新时代,然而当时只能安装在Power PC上,在Mac OS X
10.3.x推出后,终于可以成功地安装在x86的电脑上,也就是可以安装在我们的家用电脑上了。
iPhone的发布,以其拥有的跨时代的手机性能和数量可观的使用者消费市场,给广大用户带来了对iPhone手机应用程序开发的强大欲望,而苹果公司推出的iPhone
SDK就是对应于iPhone OS的移动硬件上使用的程序开发平台,iPhone
OS的硬件包括iPhone、iPod-touch和iPad等苹果移动硬件设备。如图1.1所示就是iPhone的官方截图。
图1.1 iPhone 4官方截图
苹果公司为支持此新颖的移动平台应用程序开发,给广大用户提供了一系列精美的开发工具。这组工具统称为iPhone
SDK和Xcode应用程序开发平台,包含代码编写、界面设计制作和程序仿真调试等工具,而且Xcode还可以运用iPhone
Simulator来仿真虚拟iPhone OS的环境以运行开发后的程序,而且使用iPhone
SDK和Xcode是免费的,使用其进行编程和调试是非常方便的,但如果需要进行程序的发布和销售,就需要购买$99美金一年的一般用户版或$299美金一年的企业用户版,当然在程序发布前还是要在各种iPhone
OS硬件下进行全面的测试。
在iPhone
SDK的编译中是使用Object-C编程语言的,如果不了解C语言或Object语言的特性和结构,可以参考Object-C语言的入门丛书作为编程基础,或务必仔细阅读本书程序中的每行编程代码,本书会将所有内容中的所有代码要点列出,在30天教程里将帮助读者使用iPhone
SDK和一步一步地学习iPhone手机应用程序的开发和制作。
1.1 iPhone SDK 4和Xcode的使用与安装
iPhone OS操作系统将不再神秘,通过网络下载x86-PC通用版的Mac OS X
10.6以上版本,便可以安装在任何一台机器上,详细的Mac
x86-PC系统安装方法本书就不介绍了,在各大网站都可以找到各类的安装方法,或者可以选择买台Mac机器。在完成安装后就可以进入操作系统了,苹果的iPhone
SDK的官方网站下载如图1.2所示。地址为:
https:developer.apple.comiphoneindex.action#downloads
图1.2 官方下载页面
下载最新版的 Xcode 3.2.3和iPhone SDK 4或iOS SDK
4皆可,当然要先注册苹果开发者账号后才有权限打开下载的链接,而注册苹果开发者账号是完全免费的。
如图1.3所示,运行xcode_3.2.3_and_iphone_sdk_4__final.dmg文件。
图1.3 xcode_3.2.3_and_iphone_sdk_4__final.dmg文件的安装
在关于Xcode和iPhone
SDK的文件下详细地介绍了此软件的版本、最新消息、在操作系统中占用的空间和存放的位置、怎样在操作系统中彻底删除此软件等信息。当然这些都不是重点,现在回到要理解的内容。
如图1.4~1.7所示,单击Continue按钮直到安装完成。
图1.4
安装界面第1步
图1.5 安装界面第2步
图1.6
安装界面第3步
图1.7 安装完成
1.2 Xcode使用简介
现在iPhone SDK和Xcode已经在机器上安装完成,通常可以在程序所在的Developer
Applications位置或在mac应用程序栏中打开Xcode软件。
Xcode是一个Integrated Development
EnvironmentIDE,即集成开发环境,其功能在于提供Mac OS X或iPhone
OS的项目开发构建平台,使文档和代码之间的结合更加紧密,表现形式更为丰富,并使代码自动完成,产生与UI控件属性相应的自动生成的功能。本书即将使用Xcode进行iPhone
OS应用程序的构建。
如图1.8所示,单击此图标,运行已安装的Xcode。
注意:只有付费用户才可以使用iPhone、iPod Touch或iPad等iPhone
OS的硬件进行开发测试,但不用担心,iPhone
SDK为程序开发者提供了一个功能全面的虚拟开发测试器,先不用急,在下面的内容中将会详细介绍此仿真虚拟开发测试器Simulator。
1.2.1 创建iPhone OS项目
如图1.9所示,在Xcode的欢迎界面中单击Create a new Xcode project
图1.9 Xcode运行后的欢迎界面
如图1.10所示,在Xcode中打开New Project窗口,此处可以选择适合的模板来构建新的应用程序。
图1.10 Xcode的New Project窗口
在New Project窗口左上方iPhone手机的图标下,选择iPhone
OS项目的类型,因为本书的内容只关注到应用程序的开发,所以在此处的iPhone OS选项栏单击Application选项,而在New
Project窗口中央的模板图标中,单击View-based
Application选项图标,然而程序是属于iPhone的应用程序,在View-based
Application选项图标下面打开Product微调框,选择iPhone,最后在右下角单击Choose按钮,此处将选定应用程序模板。
注意:iPhone
OS分别可以在iPhone、iPad和iPod-touch上运行,当在Xcode构建项目程序时可以在Product选项栏选择iPhone或iPad。iPhone
4的分辨率为960×640像素,iPhone
3GS和iPod-touch的分辨率为480×320像素,而iPad的分辨率为1040×768像素。
命名和保存Save As窗口如图1.11所示,此处命名为“Day01”,单击Save按钮。
图1.11 命名和保存Save As窗口
1.2.2 项目程序模板简介
1 Navigation-based Application,导航库应用程序
导航库应用程序模板。本模板运用一个导航控件为应用程序规定一个开发起点,它提供一个用户界面来配置导航栏控件显示一系列的导航条目,通常用于带有导航功能的应用程序,引导用户从一个视图界面转换到另一个视图界面中。
2 OpenGL ES Application,OpenGL三维图形的子集应用程序
OpenGL ES三维图形应用程序模板。本模板运用OpenGL ES-based
View为应用程序规定一个开发起点,它提供一个用户界面来配置显示三维图形动画,模板已经具备大部分可编辑的三维程序文件,该模板通常使用于三维iPhone
OS的游戏开发中。
3 Split View-based Application,分屏显示应用程序
分屏显示应用程序模板。本模板运用一个分屏显示控件为应用程序规定一个开发起点,它提供一个用户界面来配置一个分屏控件和两个显示控件去管理主屏格式的细节,通常在大屏幕并拥有高分辨率的iPad应用程序开发中使用。
4 Tab Bar Application,标签栏应用程序
标签栏应用程序模板。本模板运用一个标签栏为应用程序规定一个开发起点,它提供一个用户界面来配置一个显示控件用作显示标签控件里的第一个栏目,和一个标签栏控件用作显示其他标签栏目里的内容。
5 Utility Application,实用应用程序
实用应用程序模板。本模板运用一个主页界面和一个背页界面为应用程序规定一个开发起点,它为程序设置一个info按钮,翻转主页界面到背面界面和一个导航条按钮,翻转背面界面回到主页界面。
6 View-based Application,基于视图的应用程序
基于视图的应用程序模板。本模板运用一个单面的界面为应用程序规定一个开发起点,它为程序提供一个视图控件来管理界面的显示和一个Nib文件来容纳视图。Nib文件包含各个归档对象和每个对象信息,包括其大小和位置,对应程序储存预定义和可寻地址的用户界面类。
7 Windows-based Application,基于窗口的应用程序
基于窗口的应用程序模板。本模板内只包含程序所需的基本文件,没有任何视图页面,在熟悉iPhone
OS的程序构建后,可以使用此模板构建自定义程序所需要的分屏、标签栏、视图转换、游戏等。
所有类型的视图都可以在此模板中开发,没有任何局限。
1.2.3 项目开发界面
如图1.12所示为Xcode的项目应用程序编辑界面。
图1.12 Xcode的项目应用程序编辑界面
1.2.4 项目工具栏简介
在Xcode的工具栏内包含Overview、Action、Breakpoints、Build and
Run、Tasks、Info、Search等工具。
这里首先关注两种。
1 Tasks任务
如图1.13所示,单击Task工具图标终止运行中的程序。单击Task图标中的下三角,列出运行中的程序。
图1.13 Task工具
2 Search搜索
如图1.14所示,搜索项目程序内与关键字相关的内容,显示在详细叙述框内。例如,在搜索栏内输入“main”,详细叙述框内显示与关键字“main”相关的内容。
图1.14 Search工具
如图1.15所示,为Xcode的工具图标:Overview、Action、Breakpoints、Build and
Run和Info等。
1.2.5 显示开发代码行数
在程序开发中,代码的行数显示是很重要的,当发现程序栏显示有错误时,却难以找回代码位置,代码的行数显示方便了程序在对应位置进行的查错和修改。在Xcode安装后代码的默认行数显示是关闭的,现在把行数显示开启。
如图1.16所示,在Xcode菜单中选择Preferences命令。
图1.16 Xcode的选项列表
如图1.17所示,单击Text Editing选项图标,选中Show line
numbers复选框,其方形框中出现“√”标记,在右下角再次单击OK按钮。
图1.17 文字显示设置窗口
1.2.6 以_Prefix.pch为后缀的文件对象
_Prefix为所有的项目程序文件预先配置运行环境的前缀标头,在程序运行之前,引入所需框架中的.h头文件。这样可以减少每个头文件对程序编译做出相同的定义,在巨型的应用程序项目开发中节省大量的时间,例如,程序有100个根文件需要定义abc.h,只需要在_Preix.pch文件下建立一个对象,所有的根文件便可以重复地对程序编译做出定义。
单击Day01_Prefix.pch,模板程序的默认代码如下:
*第1天程序的Day01_Prefix.pch文件的内容*
如果条件语句:当对象包含有Object-C和C的根文件
#ifdef __OBJC__
此处模板为程序引入相关的框架文件,在以后的日子里本书会对程序的每个骨架做详细介绍
#import
#import
如果条件语句结束
#endif
说明:头文件和根文件。在C语言结构的程序形式中,头文件是为了搜寻对应的类型和函数信息。例如,可以在头文件中声明一个UI控件,此控件可以在根文件中定义,根文件就是程序中的源代码。
1.2.7 main.m入口衔接程序文件
如图1.18所示,main.m文件是项目应用程序的声明入口程序文件,这是Object-C的最经典的程序入口程序代码,UIApplication内的“*pool”声明了指针变量pool池,指向一个新创建的NSAutoreleasePool对象,自动释放池,在内存中保留了空间,并且首先会检查之前备案的所有事例,所有被记录的事例都会依次调用它的release释放方法。
例如,程序中的名字和图标,它对程序的Info.plist
特性文件进行扫描,Info.plist容纳着关于程序的信息。
图1.18 入口衔接程序图解
模板程序的main.m文件默认代码如下:
*第1天程序的main.m文件的内容*
此处为文件引入相关的框架文件
#import
此处的argc、argv[]是命令行参数,其中argc是参数的个数,argv[]存储参数的字符串。
例如运行一个带有命令行参数的程序:程序名aa bb cc其中aa bb cc就是参数,
参数为argc=3,argv[0]=aa,argv[1]=bb,argv[2]=cc
int mainint argc, char *argv[] {
在此处*pool声明了指针变量pool池,指向一个新创建的NSAutoreleasePool对象;
例如,我们在此处把pool看成一个普通对象,先是alloc分配任务型内存,
然后pool同时设置保留值数量为1。release释放,同时设置保留值数量为0,
自动调用它的dealloc取消分配方法
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
创建了一个UIApplatioMain事件
int retVal = UIApplicationMainargc, argv, nil, nil;
释放pool池,返回reVal的值
[pool release];
return retVal;
}
代码实现了应用程序的声明入口程序,这是苹果公司在Xcode模板中默认的方法,用户可以使用它与程序代码与入口程序进行衔接。
1.3 Interface Builder使用简介
Interface Builder界面生成器是一个图形开发环境,它可以对iPhone
SDK内的“.xib”视图文件进行编辑,并且使用可视形象的组装项目程序。在Xcode模板内,每个视图界面都包含一个.xib文件,代表其单个窗口界面的信息。使用Interface
Builder的功能可以组装项目程序窗口界面,通过简单地拖放鼠标连线来配置连接程序内的各个组件,还可以使用其内在的工具Inspector检查器配置程序组件的属性。
1.3.1 关于Nib和Xib文件
Nib和Xib的文件后缀格式在创建项目应用程序中一个非常重要的环节,是其提供一组拥有可读取性的形象对象来取代编写一大堆代码连接到界面和显示界面运行结果,为项目程序提供开发选项,Nib文件简化了在程序中所写的用户界面代码。在程序的建立运行中,Xcode会自动将程序的Xib文件转换为Nib文件,从而用户可以使用它们对程序进行开发,并且可以继续储存为相同的文件格式。Nib和Xib表达程序中相同的信息,但Xib文件更加适合开发,因为它提供SCM-friendly
format软件控制管理的友好格式,而且可以使用不同的指令进行对比。
1.3.2 图形开发环境概述
Interface Builder给程序提供了一系列的工具,帮助建立和调整Nib文件。
如图1.19所示,在组别和文件列表栏双击,即可打开Resources组,然后可以双击Day01ViewController.xib文件。
图1.19 Resources组的文件
如图1.20所示,Interface Builder程序自动运行。
图1.20 Interface
Builder程序运行后的View窗口和Day01ViewController.xib窗口
1 File’s Owner
如图1.21所示,在Day01ViewController.xib文件窗口中右击File’s
Owner,列出程序实体显示对象,程序实体生成在File’s Owner的Outlets。
图1.21 InDay01ViewController.xib窗口,右击File’s Owner对象
如图1.22所示,在已建立名为Day01的View-based
Application项目处,存在一个单一的显示界面,View默认下与File’s Owner连接。
图1.22 Day01ViewController.xib窗口,右击View控件对象
2 Library Windows程序的库窗口
库窗口中放着程序的对象和资源,可以使用鼠标把它们拖动到Interface Builder文件窗口中。
如图1.23所示,在Interface
Builder菜单栏中,打开Tools菜单,选择Library命令。
图1.23 程序的库窗口
如图1.24所示,添加一个Button按钮控件到View窗口内。单击Objects,选择Library,打开Objects列表,再次单击Inputs
Values选项,从列表中把Round Rect Button拖动到View视图窗口。
图1.24 从列表中把Round Rect Button拖动到View视图窗口
3 Inspector Windows检查器窗口
使用检查器可以简单地去显示和调整所选择的程序对象,为程序对象进行设置。
如图1.25所示,在Interface
Builder菜单栏中选择Tools→Inspector命令。
图1.25 打开Interface的检查器
如图1.26所示,选择刚才已经从Library窗口中拖放到View窗口内的Round Rect
Button按键控件,Inspector窗口内包含有4个检查器选项,分别单击Inspector窗口内的4个检查器选项。
1. Attributes Inspector特性检查器
显示对象文件的配置特性,有利于Nib文件在程序读取时的调整。
2. Connections Inspector连接检查器
显示对象连接内与Outlet和Action一起的信息,对象连接的能力在用户为项目程序的形态设计时起到关键的作用。
3. Size Inspector尺寸检查器
显示关于对象在界面的大小和位置的相关信息,有效地帮助用户对程序界面的布局进行调整。
4. Identity身份检查器
显示对象在项目程序的身份信息,帮助用户辨认和确定对象。
图1.26 Inspector窗口内的4个检查器选项
1.4 Simulator使用简介
为确保将要使用所编写的项目程序的用户可以得到最好得用户体验,iPhone
SDK提供了仿真虚拟开发测试器,名为Simulator,项目程序将真实呈现在Simulator上,当然可以从中收集程序的运行相关数据,例如内存和磁盘空间占用率、网络的状态、图像的性能等。
1.4.1 在iPhone SDK 4环境下运行SDK 2或SDK 3的应用程序
如图1.27所示,当在Xcode
版本升级后,运行以往所编写过的程序时,或在网络上下载不同版本的实例程序时,常常会在程序建立运行中遇到版本出错问题。在Xcode的状态栏中出现iPhone
2.0兼容错误。
图1.27 Xcode状态栏的版本错误提示
建立结果显示error: There is no SDK with the name or path
‘iphoneos2.0’,这表明项目文件开发环境与运行环境不一致,项目程序无法在Simulator中建立和运行。
如图1.28所示,通过把运行环境调整为一致,就可以解决此问题,顺利地建立和运行,打开所需要运行的程序,在工具栏中,单击Info。
图1.28 Xcode工具栏
如图1.29所示 ,将Build下的Setting→BaseSDK→Value改为iPhone Device 4.0。
图1.29 程序版本修改后的BaseSDK页面
如图1.30所示,把列表向下拖动,找到iPhone OS Deployment Target,将Value改为iPhone OS
2.2.1。
图1.30 程序版本修改后的iPhone OS Deployment Target页面
1.5 小结和练习
今天在关于iPhone OS的学习中,读者对iPhone
SDK和Xcode有了概括性的认识,学会了如何在Xcode内使用项目模板创建程序;懂得了Xib和Nib之间重要关系;理解了在Interface
Builder内如何使用Library在界面内创建程序控件;并学会了调整不同版本的iPhone
OS运行环境,来解决兼用性问题。
试一试:
1. 试着创建一个Navigation-based
Application导航库应用程序项目,把Interface
Builder→Library内的一个控件添加到程序界面。
2. 试着创建一个Utility
Application实用应用程序项目,把Interface Builder→Library
内一个的Button控件添加到程序界面。
3. 试着创建一个Split View-based
Application分屏显示应用程序项目,把Interface
Builder→Library内的一个TextField控件添加到程序界面。
第2天 第一个程序“Hello World”
在本书的第1天中,介绍了怎样去构建一个iPhone
OS应用程序,但还不可以完整地运行。今天将构建一个完整的应用程序,可以在iPhone
Simulator中运行,并且使用标签在视图中显示代码所编写的内容。当然内容是在各类编程学习中最常见的“Hello
World”。构建此应用程序不但可以巩固在第1天中了解到的内容,而且在日后的程序构建学习中也会起到重要的启蒙作用,几乎所有应用程序都需要使用到今天的知识点,它为编程学习打开了大门。今天要介绍的是程序里面最基础的控件,并且它是本书所涉及到的第一个iPhone控件,此控件就是Label标签见图2.1和2.2。
Label在所有编程环境中都有广泛的应用,在iPhone
OS应用程序的构建中也不例外,是一个很常用的控件。它用于程序显示文字,通过程序的互动做出文字的变化,在今天的程序中,只是使用它显示一段静态的文字。在标签建立后,Interface
Builder给用户提供一系列的工具,使用这些工具能方便地对标签进行位置、大小和连接等的各种设置。在此之前,首先为程序选择一个合适的模板。
图2.1 没添加任何方法的运行结果
图2.2 第一个程序Hello World的演示效果
2.1 View-based Application的初次应用
View-based
Application是Xcode的一个程序项目模板,今天的程序不需要构建用户自定义的内容视图,本模板已经解决了该麻烦,它为程序建立一个单页面的视图界面,并提供一个视图控件来管理界面的显示并用一个Nib文件来容纳视图。Nib文件包含各个归档对象和对象信息,包括其大小和位置;对应程序储存预定义、可寻地址的用户界面类。
本程序不需要任何连接或动态显示,只需在单一个视图界面中使用一个标签Label控件。然而View-based
Application模板是最佳的选择,程序运行后iPhone屏幕上将显示程序在代码中已经设定的文字信息。
在上一天中,安装了Xcode软件,今天在安装好的Xcode里构建一个iPhone应用程序,体验View-based
Application模板的使用。回顾一下在第1天中也做过这样的操作,这是模板应用程序创建的基本步骤。首先,打开mac应用程序栏中的Xcode软件,单击Create
a new Xcode project图标。Xcode便打开New
Project窗口,如图2.3所示。在此处可以选择适合的模板来构建新的应用程序。
图2.3 Xcode的New Project窗口
首先,在New Project窗口左上方iPhone手机的图标下,选择iPhone
OS项目的类型,因为本书的内容只关注到应用程序的开发,所以在此处选择iPhone OS内的Application选项,而在New
Project窗口中央的模板图标中,再单击View-based
Application图标,因为程序是属于iPhone的应用程序,所以在View-based
Application选项图标下面打开Product微调框,选择iPhone,最后在右下角单击Choose按钮,此处将选定应用程序模板。
如图2.4所示,在“命名和保存Save
As”窗口中,把程序命名为Day02,单击Save按钮。
图2.4 命名和保存Save As窗口
2.2 AppDelegate class文件简介
在View-based
Application模板应用程序构建后,模板已经为程序建立好大部分在程序中需要的文件,这些默认文件按照文件的类型存放和排列在相应的文件夹中,模板在Classes文件夹内生成了Day02AppDelegate类文件;Classes是应用程序“类”文件夹,Classes文件夹内的AppDelegate是class“类”文件中的程序代理文件,负责程序的生命周期事件,例如程序内相关的控件、属性和运行的任务等。
说明:Class简单来说就是程序的类,类可以实例化,在没接触过任何编程的时候,它是一个非常陌生的名称,但因为iPhone程序构建是基于Objective-C源代码的架构,在Classes文件夹下,所有文件代码将遵循Objective-C变量中的格式和原则,从而使程序的类型对象可以实例化为实体。
单击Day02AppDelegate.h头文件,模板为它自动加入一个附有Property属性的View
Controller视图控制器属性,这就是AppDelegate代理相关的一个属性,如图2.5所示。
图2.5 Day02AppDelegate.h文件的默认内容
2.2.1 UIKit框架的作用
如图2.5所示,在Day02AppDelegate.h的内容中引入程序需要使用“类”的框架,即UIKit.h头文件,使它包含在程序中:
#import
UIKitk框架提供一系列的Class类来建立和管理iPhone
OS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口。
当引入此头文件后,便可以在程序里使用任何在UIKit里声明的类。例如今天的程序需要使用Label标签,它就属于一个事件控件的类。
如图2.6所示,图表中列出了在UIKit框架中的Class类列表,在列表中可以看到它的位置:NSObject→UIResponder→UIView→UILabel。在找出UILabel控件的同时,先来认真了解一下UIKit框架列表中涉及到的每个控件的位置,在今后的应用程序构建中,本书还会陆续使用列表中各式各样的控件,因此UIKit框架的引入是必不可少的。
图2.6 UIKit框架
2.2.2 AppDelegate.h
在模板程序Classes文件夹内的Day02AppDelegate.h文件的默认代码如下:
*第2天程序的Day02AppDelegate.h文件的内容*
模板默认引入程序需要使用“类”的框架,即UIKit.h头文件,使它包含在程序中
#import
*第2天程序的Day02AppDelegate.h文件的内容*
此处@class声明程序中的“类”名称为Day02ViewController
@class Day02ViewController;
此处@interface声明程序界面的名称为Day02AppDelegate,
其中NSObject表示它的“类”符合UIApplicationDelegate协议,
接着UIApplicationDelegate,此方法为应用程序提供了关于触发的关键事件信息,
例如什么时候程序运行完成,什么时候内存不足,什么时候重要变化发生
@interface Day02AppDelegate : NSObject {
定义一个程序显示窗口的对象
UIWindow *window;
加入视图控制实际变量的对象
Day02ViewController *viewController;
}
此处@Property声明程序的属性,并且加入在前面@interface中指定的相同对象,
其中nonatomic是使用单线程机制减少系统资源使用,并将更改方法和修改方法生成在
Property属性,
接着retain,Property的可选项,表明向Property属性的对象发送一个retain保留消
息,
而IBOutlet表示对象在Interface Builder中创建。
例如下面的代码在应用程序中显示了一个窗口控件,把这个控件连接到nib文件并显示在
Interface Builder
@property nonatomic, retain IBOutlet UIWindow *window;
又例如,代码在应用程序中显示了一个视图控制控件,把这个控件连接到nib文件并显示在
Interface Builder
@property nonatomic, retain IBOutlet Day02ViewController
*viewController;
程序结束点,表明结束Day02ViewController.h文件
@end
2.2.3 AppDelegate.m
在模板程序Classes文件夹内的Day02AppDelegate.m文件的默认代码如下:
*第2天程序的Day02AppDelegate.m文件的内容*
#import告诉编译器去合成ViewController的存储器的方法和遵从内存的规则;
确认ViewController在dealloc方法中被释放;
模板引入所需的Day02AppDelegate.h头文件,使它包含在程序中
#import "Day02AppDelegate.h"
模板引入所需的ViewController.h头文件,使它包含在程序中
#import "Day02ViewController.h"
程序开始点,表明启动Day02AppDelegate.m文件
@implementation Day02AppDelegate
@synthesize window:本指令告诉编译器去合成Window的存储器的方法
为程序自动生成Window设置函数setters和获得函数getter
@synthesize window;
本指令告诉编译器去合成ViewController的存储器的方法,
为程序自动生成ViewController设置函数setters和获得函数getter
@synthesize viewController;
编译指示标,标记应用程序的生命周期
#pragma mark -
#pragma mark Application lifecycle
在应用程序开始后重新自定义用户化点,在显示窗口加入ViewController的显示视图
- BOOLapplication:UIApplication*application
didFinishLaunchingWithOptions:NSDictionary*launchOptions
{
在显示窗口子视图加入ViewController视图
[window addSubview:viewController.view];
使被使用对象的主窗口显示到屏幕的最前端
[window makeKeyAndVisible];
对程序判断语句返回“是”
return YES;
}
因为iPhone3并不是多任务的操作系统,所以应用程序很容易受到打扰,
当然在iPhone 4支持多任务下,没有这样的麻烦。
但为了节省资源也建议应用程序使用,
例如:一个来电可能导致应用程序失去中心运行点,如果这个时候接听了电话,
那么应用程序会被自动终止运行,
还有很多其他类似的事件会导致iPhone应用程序失去中心运行点,
使用applicationWillResignActive方法,把应用程序先停止,
例如游戏进行中有来电,游戏将先行终止,待通话结束后再次调用进行中的游戏
- voidapplicationWillResignActive:UIApplication*application
{
}
恢复任何被停止的任务程序,
例如在运行应用程序的时候锁屏会调用的前面的applicationWillResignActive方法,
而当屏幕被解锁的时候,会调用applicationDidBecomeActive方法,
屏幕解锁后,任务程序继续运行
- voidapplicationDidBecomeActive:UIApplication*application
{
}
使用applicationDidEnterBackground这个后台方法去释放共享的资源、
储存用户的文件、无效的时间和放置足够的应用程序形态的信息
- voidapplicationDidEnterBackground:UIApplication*application
{
}
在程序形态改变后,待方法去结束它。当编写的程序支持后台多任务处理时,
用户选择退出后台任务后,可以使用applicationWillTerminate方法去执行结束
- voidapplicationWillTerminate:UIApplication*application
{
}
从后台调用出作为过渡的一部分无效形式,可以取消很多已经进入到后台的转换。
例如程序在运行后已经被终止的图形界面,可以在此处让程序重新对该图从后台中导出
-
voidapplicationWillEnterForeground:UIApplication*application
{
}
编译标记,指示应用程序的内存管理
#pragma mark -
#pragma mark Memory management
因为iPhone设备内存有限,如果为应用程序分配太多内存,操作系统会终止此应用程序的运行,
但在程序终止之前,
操作系统会通过先调用applicationDidReceiveMemoryWarning方法,
尽量释放可用内存供给应用程序,并及时发出警告提示
-
voidapplicationDidReceiveMemoryWarning:UIApplication*application
{
}
使用voiddealloc的释放方法,把ViewController和Window都在本程序中释放;
最后[super dealloc]执行内存清理的工作
- voiddealloc {
[viewController release];
[window release];
[super dealloc];
}
此处表示Day02AppDelegate.m文件程序结束
@end
2.3 视图控制器文件
现在来看看在程序中视图控制器的类文件编写。ViewController类文件是程序视图的重要环节,此处可以为程序创建各类控件,使程序可以对控件进行代码编写,执行所需要程序运行的结果。
2.3.1 ViewController.h
在本程序Classes的文件夹内,双击打开Day02ViewController.h文件,代码如下:
*第2天程序的Day02ViewController.h文件的内容*
模板默认引入包含程序需要使用“类”的框架,即UIKit.h头文件,使它包含在程序中
#import
使用@interface声明程序的界面控制器为Day02ViewController
@interface Day02ViewController : UIViewController {
建立标签显示文字,把所需要的显示的文本标签告诉Interface Builder
IBOutlet UILabel *label;
}
此处@Property声明程序的属性,
并且加入在前面@interface中指定的相同UILabel控件对象
@propertynonatomic, retain UILabel *label;
程序的头文件Day02ViewController.h到此结束
@end
说明:关于IBOutlet。完成上面Day02ViewController.h头文件后,不少人会问为什么要在控件前添加一个声明IBOutlet,其实IB就是Interface
Builder的意思,通过它实现了对象在Interface
Builder中创建,需要连接到nib文件中的对象时都必须使用IBOutlet。
注意:如果Day02ViewController.h文件没被保存,上面代码中的控件将无法和Interface
Builder进行连接,代码完成后,从Xcode菜单栏中,打开File菜单,选择Save命令把文件保存,如图2.7所示。
图2.7 Day02ViewController.h文件的保存
2.3.2 ViewController.m
在本程序Classes的文件夹内,双击打开Day02ViewController.m文件,代码如下:
*第2天程序的Day02ViewController.m文件的内容*
模板引入所需的Day02ViewController.h头文件,使它包含在程序中并进行联系
#import "Day02ViewController.h"
程序开始点,表明启用Day02ViewController
@implementation Day02ViewController
本指令告诉编译器去合成控件的存储器的方法,
为程序自动生成Label标签控件的设置函数setters和获得函数getter
@synthesize label;
视图控制器读取到内存后再进行调用,在程序屏幕显示读到内存后加入额外步骤对显示进行修改
- voidviewDidLoad {
执行ViewDidLoad的工作
[super viewDidLoad];
通过viewDidload方法,
把已经读取的Label标签的文字替换成为本程序的显示内容“Hello Word”
label.text = @"Hello World";
}
iPhone的内存有限,操作系统会通过先调用DidReceiveMemoryWarning方法,
释放可用内存供给应用程序,并及时发出警告提示,
例如:View视图控件中不存有父视图Super View将被释放,相当于释放没有被使用的图片
- voiddidReceiveMemoryWarning {
执行didReceiveMemoryWarning的工作
[super didReceiveMemoryWarning];
}
使用voiddealloc的释放方法,把label在程序中释放;
最后[super dealloc]执行内存进行清理的工作
- voiddealloc {
[label release];
[super dealloc];
}
程序结束点,表明结束Day02ViewController.m文件
@end
2.3.3 对象属性中的nonatomic和retain
在ViewController.h头文件代码内的@property nonatomic, retain
UILabel中,nonatomic使用单线程机制减少系统资源使用,将更改方法和修改方法生成在Property属性,retain保留属性的可选项表明向属性的对象发送一个保留消息。
说明:“@property”、“@synthesize”和“release”之间的关系。前面在Day02ViewController.h中在建立“标签”控件后,使用了@property
nonatomic,retain UILabel
*label;声明程序的属性,并且加入在前面@interface中指定的相同UILabel控件对象,所以在Day02ViewController.m开始时必须添加@synthesize
label;告诉编译器去合成控件的存储器的方法,为程序自动生成Label标签控件的设置函数setters和获得函数getter。最后在模板程序的默认voiddealloc的释放方法中使用[label
release];把label在程序中释放。这样就完整地完成了程序中一个控件的生命周期了。
2.4 ViewController.xib文件引导Interface Builder
如图2.8所示,在文件列表栏中,双击打开Resources组,双击Day02ViewController.xib文件,Interface
Builder程序自动运行,在此处可以编辑和改变界面。
图2.8 Day02ViewController.xib文件在Xcode中的位置
默认情况下View视图界面已经被选择,当xib文件窗口被打开时,View的Attributes
Inspector特性检查器也会自动打开,如图2.9所示。
图2.9 Interface Builder的默认界面
在某些情况下,特性检查器有可能没有打开,确认View视图界面被选择。
如图2.10所示,在Interface Builder菜单栏中,打开Tools菜单,选择Attributes
Inspector命令。
图2.10 Interface Builder工具栏中的Attributes Inspector命令
2.4.1 设置视图界面的背景颜色
把视图背景颜色设置为黑色。为使今天程序中的文字能更鲜明地显示在屏幕中,选中View视图界面后,在View
Attributes视图特性检查器窗口的下三角View的Background选项中,单击打开背景颜色列表,选择Black
Color黑色选项,如图2.11所示。
图2.11 View Attributes检查器中视图的背景颜色设置为黑色
2.4.2 添加Label到视图中
添加两个Label标签,显示今天程序的一个标题“第2天 第一个程序 Hello
World”,另一个显示运行后的内容“Hello World”。
如图2.12所示,打开库的组件面板,在Interface
Builder菜单栏中打开Tools菜单,选择Library命令。单击Objects,单击列表选项打开Objects列表,再次单击Inputs
Values选项,从列表中拖动两个Label放到View视图窗口。
图2.12 Library库的组件面板
如图2.13所示为特性检查器,选择最上面的一个Label,在Label
Attributes窗口的下三角Label选项的Text文本框中填入“第2天 第一个程序 Hello World”标题。
在View窗口拖动Label中的圆点,调整Label到适当的长度。
图2.13 视图中的Label和特性检查器
在主视窗口,单击目标控件或按Tab键选中另一个Label控件。
注意:如果Label控件没有被选中,将无法使用Connection Inspector连接检查器。
如图2.14所示为连接检查器,在Inspector选项栏中单击Connection Inspector选项。
在Label Connections窗口的下三角Referencing Outlets选项移动鼠标到New Referencing
Outlets后面的圆圈上,单击圆圈变为+,拖直线连接到Day02ViewController.xib窗口中的File’s
Owner图标上,放开鼠标后出现“代码中的操作效应”列表,单击Label列表项。
图2.14 视图中的Label和连接检查器
如图2.15所示为文件的保存,完成上边步骤后就可以保存今天的xib文件,在Interface
Builder菜单栏中,打开File菜单,选择Save命令。
图2.15 xib文件的保存
在xib文件成功保存后,便可以关闭Interface
Builder了,当程序运行时Label将会显示今天在Day02ViewController程序Class文件中预先编写好的文字内容。
2.5 程序的运行和保存
如图2.16所示,回到Xcode菜单栏中,打开Build菜单,选择Build and
Debug命令,此时Xcode会提醒用户保存所编辑过的文件。
如图2.17所示,在此处单击Save All按钮。文件保存后,今天所构建的程序将在iPhone
Simulator中运行。
图2.16 运行程序
图2.17 保存Xcode文件
2.6 添加iPhone应用程序图标
如图2.18所示,在创建图标前,运行程序后单击iPhone主菜单按钮。如图2.19所示,在应用程序目录中,今天的图标只是空白色。为了使程序更加有真实感,此处为程序在iPhone主窗口中显示今天程序的图标。对于创建的应用程序图标,当然iPhone主窗口的显示图标只能是57×57的像素。在模板程序默认状态下,只要把图标文件命名为icon.png并添加到文件栏中,便可以自动显示,如图2.20所示,当图标添加后再次运行程序时,图标便会出现在iPhone主窗口中。
注意:在创建程序的图标文件中一定要确认图标文件的格式为.png图像,所有在iPhone程序开发中所用的图像文件都应该使用此格式。大部分的图像文件都可以在iPhone
OS程序构建中显示,但在一般情况下Xcode都会为.png的图像自动优化,例如:图标自动生成玻璃化效果,在创建图标时添加图像效果是不必要的,所以在构建程序中使用格式为.png图像是最为方便和有效的。在今后的程序中,本书将会使用.png格式为主的图像。
图2.18 程序在仿真器中运行后 图2.19 图标文件没被添加时为空白 图2.20
图标文件被添加后显示图标
在程序文件列表栏中,单击Day02-Info.plist,在Icon
file中查看或添加一个新的图标,如图2.21所示。
图2.21 Day02-Info.plist文件的内容
如图2.22所示,创建应用程序图标,在程序文件列表栏中,右击Resources文件夹,在弹出的快捷菜单中移动鼠标到Add选项,在子菜单列表中选择Existing
Files命令。
如图2.23所示,选择程序的图标的路径,单击已创建的图标文件icon.png,单击Add按钮。
如图2.24所示,在图标文件被添加到程序中之前,提示窗口会询问是否将文件复制到程序所在目录,为了使程序可以更为完整,选中Copy
items into destination group’s
folder复选框,然后单击Add按钮。
2.7 小结和练习
今天在关于iPhone OS的程序构建中,读者了解到Xcode的View-based
Application模板的初步使用,并对模板中每个Class类文件功能有了概括性的认识,学会了如何在Xcode程序中编写最基本的文字显示代码,懂得了如何简单地使用Interface
Builder内的Library在界面内创建程序控件,并使用File’s
Owner对程序代码与用户界面控件进行连接,从而在界面中利用Label显示文本信息。
试一试:
1. 试着把程序所显示的文字“Hello World”改为“How Are You”。
2. 在程序的Day02ViewController文件中,添加与今天一样的代码创建要显示的文字,
在Day02ViewController中添加UILabel控件到程序界面,使用File’s
Owner连接
代码与用户界面控件进行连接。
3. 使用FlipsideView.xib显示今天的标题。
|
|