是否梦想着开发自己的iPhone应用,让心跳加速、脉搏加快?如果熟悉Mac开发(Xcode),那么开始iPhone开发吧。这是学习iPhone开发的简单方式。
在本文中,将解释如何轻松地在Apple iPhone/iPod touch上创建一个基本的“Hello World”应用程序。如果熟悉Mac,那么编写iPhone应用程序就像编写Mac应用程序一样简单。
下载Xcode和SDK。Apple发布了支持Xcode 3.1.2的iPhone SDK。要安装SDK,需要注册Apple以获得Apple ID。Mac版本10.5(Mac Leopard)是安装iPhone SDK 3.1.2的最低操作系统版本。通过此安装,可以编写iPhone的示例程序,但Mac需要支付99美元才能在iPhone设备上运行它们。出于测试目的,可以使用iPhone模拟器。通过支付99美元订阅iPhone开发者计划,可以开始在iPhone设备上部署和运行应用程序。Apple提供了简单的步骤来完成这个过程,所以不详细说明。
在成功安装iPhone SDK和Xcode之后,现在是时候创建一个新项目并开始一个示例应用程序了。选择文件 > 新项目或Apple键 + Shift + N打开新项目菜单。在左侧菜单中选择iPhone OS部分的应用程序项,然后在右侧图标中选择基于视图的应用程序。选择选择以输入项目名称,在示例代码中使用了HelloWorld。
创建项目“HelloWorld”后,可以找到三个重要的包,还有其他一些。类包用于iPhone应用程序中使用的类控制类,资源包用于保存所有资源,如图像、文档等,框架包用于保存当前项目使用的框架。
类包中有四个文件:HelloWorldAppDelegate.h、HelloWorldAppDelegate.m、HelloWorldViewController.h、HelloWorldViewController.m。委托头文件包含一个引用对象到UIWindow,用于控制应用程序的所有UI用户交互。它还管理所有其他界面组件。它还包含一个引用到视图控制器(HelloWorldViewController)。
在HelloWorldAppDelegate.m文件中自动生成的方法applicationDidFinishLaunching在应用程序加载后被调用。在这个方法中,将创建一个HelloWorldViewController的对象,并将这个对象添加到UIWindow中,使视图可见。
window addSubview:viewController.view;
[window makeKeyAndVisible];
iPhone SDK是基于MVC(模型-视图-控制器)设计模式设计的。因此,所有视图总是与一个视图控制器对象一起存在。Xcode的自动代码生成器默认生成视图接口,即HelloWorldViewController.xib文件。通过双击.XIB文件,可以在Interface Builder(IB)中打开视图。也可以在IB中检查视图和控制器的关系。
现在是时候向视图中添加控件了。有两种方法可以向视图中添加控件,编程方式或使用Interface Builder(IB)。在这个例子中,将讨论如何以编程方式添加控件。
打开HelloWorldViewController.h文件,在接口声明中定义以下变量:
IBOutlet UIView *viewHelloWorld;
// 显示HelloWorld的视图
IBOutlet UIButton *btnShow;
// 点击此按钮显示文本"HelloWorld"
IBOutlet UILabel *lblHelloWorld;
// 标签用于保存"HelloWorld"文本
定义一个视图以添加按钮和标签以显示“HelloWorld”文本。在大括号之后,添加一个方法声明以接受按钮的点击事件,并定义属性以访问UI元素。
定义一个视图以显示,一个按钮和标签以进入视图。在大括号之后,添加一个方法声明以接受按钮的点击事件,并定义属性以访问UI元素;myButton、myLabel和viewHelloWorld。整个代码应该看起来像这样:
#import
@interface MyHelloWorldViewController : UIViewController
{
IBOutlet UIButton * btnShow;
IBOutlet UILabel * lblHelloWorld;
IBOutlet UIView * viewHelloWorld;
}
- (IBAction)handleEvent:(id)sender;
@property (nonatomic, retain) UIButton * btnShow;
@property (nonatomic, retain) UILabel * lblHelloWorld;
@property (nonatomic, retain) UIView * viewHelloWorld;
@end
合成UI元素以创建获取器和设置器。在@implementation行之后,添加以下行到HelloWorldViewController.m文件:
@synthesize btnShow;
@synthesize lblHelloWorld;
@synthesize viewHelloWorld;
取消注释loadView方法,并添加以下行到方法中以创建按钮和标签:
- (void)loadView
{
// 创建并配置视图
CGRect cgRct = CGRectMake(0.0, 0.0, 480, 320);
// 定义视图的大小和位置
viewHelloWorld = [[UIView alloc] initWithFrame:cgRct];
// 初始化视图
viewHelloWorld.autoresizesSubviews = YES;
// 允许它调整视图中元素的大小
self.view = viewHelloWorld;
// 创建一个UIButton(UIButtonTypeRoundedRect)并调整设置
btnShow = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnShow.frame = CGRectMake(100, 100, 100, 50);
// 按钮的大小和位置
[btnShow setTitle:@"Display" forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
btnShow.adjustsImageWhenHighlighted = YES;
// 添加动作处理程序并将当前类设置为目标
[btnShow addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
// 显示按钮
[self.view addSubview:button];
// 创建一个标签
cgRct = CGRectMake(100, 170, 100, 50);
// 定义标签的大小和位置
lblHelloWorld = [[UILabel alloc] initWithFrame:cgRct];
lblHelloWorld.text = @"Hello World";
// 显示标签
[self.view addSubview:lblHelloWorld];
}
点击构建并运行按钮,检查界面是否正确绘制。它应该看起来像下面的截图:
在当前类中定义事件后,需要定义处理程序以接收事件。以下方法定义了对事件的处理。当此事件被触发时,它将更改标签文本为“Hello World”。
- (void)action:(id)sender
{
label.text = @"Bye World";
}