用户界面控件的实现
原文:http://www.appsamuck.com/day1.html
感谢作者:admin@appsamuck.com
由于苹果放弃了iPhone SDK的NDA(保密协议),让我们现在可以把iPhone开发的具体实例公之于众。废话不说,先看程序。 虽然程序很简单,但是这些代码显示了iPhone SDK不同于其他编程的一些特点,为此,我吃了不少苦头。
程序的名字叫"Minutes to Midnight"(午夜时钟) ,是个很简单的倒计时程序。这个想法来自我的朋友Chris Craft,他之前发表了30天Windows Mobile编程实例。
首先,启动xCode。
在"New Project" 对话框中
- 选择: iPhone OS ->Applications-> View-Based Application
- 输入: "MinutesToMidnight"
项目建立完成后,你可以看到一个用户界面(UIview)的视图,同时也是应用程序的主视图。我想让这个计时器的样子像个塑料闹钟一样。所以我用了黑色的背景,红色液晶字体的数字。首先,我们先把用户界面(UIview)的背景设定为黑色:
- 双击 "MinutesToMidnightViewController.xib" 启动 "Interface Builder"
- 单击: Tools -> Reveal In Document Window -> View
- 单击: Tools -> Attributes Inspector
- 选择background attribute(背景属性)设置为Black
然后,我们增加一个UILabel(文本),用做计数器的显示。
- 单击: Tools -> Library
- 拖动一个Label到Main View(主视图)
- 通过鼠标调整Label的大小
- 设置位置和颜色,我把它设置为红色居中
再次,我们需要把对label的引用增加到代码中,完成对Label的实时更新。
- 在文本窗口"File's Owner"中
- 单击: Tools->Idenity Inspector
- 在inspector中,单击 "Class Outlets" 前面的“+”
- 更改myOutlet1为"countdownLabel"
- 更改id为UILabel
- 单击submit完成修改
接着,我们来修改类文件。
- 还是在interface builder 中,在Document Explorer 中选中"File's Owner"
- 单击: File->Write Class Files
- 保存为: "MinutesToMidnightViewController"
- 单击: Save
- 单击: Merge
- 在Actions中(右下加) 选择 "Select Left"
- 单击: 标题栏上的红色圆圈关闭窗口
- 单击: Save
- 关闭剩下的分栏窗口
- 单击xCode,编译(rebuild project )
现在,我们需要在代码中连接刚刚编译好的Label和之前在用户界面中增加的UILabel
- 重新打开Interface Builder
- 在Document Window中选择Label
- 单击: Tools -> Connection Inspector
- 把你的鼠标移动到"New Referencing Outlet"右面的空圈位置(这是圆圈变成了“+”)
- 拖动这个“+”到Document Window窗口中的"File's Owner"
- 这时countdownLabel出现在弹出列表中
- 单击: File -> Save then close Interface Builder
回到xCode 中重新编译工程
非常好!还有三步 。
启动计时器
- 在xCode中
- 在MinutesToMidnightViewController.h文件中增加这一行“ -(void)updateLabel; right before the line @end ”
- 在MinutesToMidnightViewController.c文件中增加:
-(void)updateLabel {
}
right before the line @end
- 在MinutesToMidnightAppDelegate.h文件中增加一个变量 "NSTimer *timer;" 并增加一个方法"-(void) onTimer;"
- 在MinutesToMidnightAppDelegate.m中
- 写一个applicationDidFinishLaunching方法,把计时器加进去
- 写一个onTimer方法用来在界面中更新label
- 写一个"applicationWillTerminate" 方法用来终止计时器
- 在dealloc方法中释放计时器
刷新label
- 打开MinutesToMidnightViewController.c
- 在"viewDidLoad"方法中增加代码改变字体
- 写一个"updateLabel"方法,用来获取时间并更新Label
生成工程并运行模拟器~
下载源代码: MinutesToMidnight.zip