- iOS 教程
- iOS - 首页
- iOS - 开始
- iOS - 环境设置
- iOS - Objective-C 基础
- iOS - 第一个iPhone应用程序
- iOS - 动作和出口
- iOS - 代理
- iOS - UI 元素
- iOS - 加速计
- iOS - 通用应用程序
- iOS - 相机管理
- iOS - 位置处理
- iOS - SQLite 数据库
- iOS - 发送电子邮件
- iOS - 音频和视频
- iOS - 文件处理
- iOS - 访问地图
- iOS - 应用内购买
- iOS - iAd 集成
- iOS - GameKit
- iOS - 故事板
- iOS - 自动布局
- iOS - Twitter 和 Facebook
- iOS - 内存管理
- iOS - 应用程序调试
- iOS 有用资源
- iOS - 快速指南
- iOS - 有用资源
- iOS - 讨论
iOS - 第一个iPhone应用程序
创建第一个应用程序
现在我们将创建一个简单的单视图应用程序(一个空白应用程序),它将在 iOS 模拟器上运行。
步骤如下。
步骤 1 - 打开 Xcode 并选择创建新的 Xcode 项目。
步骤 2 - 选择单视图应用程序。
步骤 3 - 输入产品名称(即应用程序名称)、组织名称,然后是公司标识符。
步骤 4 - 确保选中使用自动引用计数,以便在资源超出作用域后自动释放分配的资源。单击下一步。
步骤 5 - 选择项目的目录并选择创建。
步骤 6 - 您将看到如下屏幕 -
在上面的屏幕中,您可以选择支持的方向、构建和发布设置。有一个字段部署目标,我们想要支持的设备版本,让我们选择 4.3,这是现在允许的最小部署目标。目前,这些不是必需的,让我们专注于运行应用程序。
步骤 7 - 现在,在“运行”按钮附近的下拉菜单中选择 iPhone 模拟器,然后选择运行。
步骤 8 - 就这样;您已成功运行您的第一个应用程序。您将获得如下输出 -
现在让我们更改背景颜色,以便开始使用界面构建器。选择 ViewController.xib。在右侧选择背景选项,更改颜色并运行。
在上面的项目中,默认情况下,部署目标将设置为 iOS 6.0,并且将启用自动布局。为了确保我们的应用程序可以在 iOS 4.3 及更高版本的设备上运行,我们已经在创建此应用程序的开始修改了部署目标,但我们没有禁用自动布局。
要禁用自动布局,我们需要取消选中每个 nib(即 xib 文件)的文件检查器中的自动布局复选框。Xcode 项目 IDE 的各个部分如下图所示(由 Apple Xcode 4 用户文档提供)。
文件检查器位于上图所示的检查器选择栏中,可以在那里取消选中自动布局。当您只想定位 iOS 6 设备时,可以使用自动布局。此外,如果您将部署目标提高到 iOS 6,您还可以使用许多新功能,例如 Passbook。目前,让我们坚持使用 iOS 4.3 作为部署目标。
第一个 iOS 应用程序的代码
您会发现为您的应用程序生成的五个不同的文件。它们列出如下 -
- AppDelegate.h
- AppDelegate.m
- ViewController.h
- ViewController.m
- ViewController.xib
AppDelegate.h
// Header File that provides all UI related items. #import <UIKit/UIKit.h> // Forward declaration (Used when class will be defined /imported in future) @class ViewController; // Interface for Appdelegate @interface AppDelegate : UIResponder <UIApplicationDelegate> // Property window @property (strong, nonatomic) UIWindow *window; // Property Viewcontroller @property (strong, nonatomic) ViewController *viewController; //this marks end of interface @end
代码中的重要项目 -
AppDelegate 继承自 UIResponder,用于处理 iOS 事件。
实现 UIApplicationDelegate 的委托方法,该方法提供关键的应用程序事件,例如完成启动、即将终止等。
UIWindow 对象用于管理和协调 iOS 设备屏幕上的各种视图。它就像所有其他视图加载的基础视图。通常,应用程序只有一个窗口。
UIViewController 用于处理屏幕流程。
AppDelegate.m
// Imports the class Appdelegate's interface import "AppDelegate.h" // Imports the viewcontroller to be loaded #import "ViewController.h" // Class definition starts here @implementation AppDelegate // Method to intimate us that the application launched successfully - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } - (void)applicationWillResignActive:(UIApplication *)application { /* Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.*/ } - (void)applicationWillEnterForeground:(UIApplication *)application { /* Called as part of the transition from the background to the inactive state. Here you can undo many of the changes made on entering the background.*/ } - (void)applicationDidBecomeActive:(UIApplication *)application { /* Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.*/ } - (void)applicationWillTerminate:(UIApplication *)application { /* Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. */ } - (void)applicationWillTerminate:(UIApplication *)application { /* Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. */ } @end
代码中的重要项目 -
此处定义了 UIApplication 委托。上面定义的所有方法都是 UI 应用程序委托,不包含用户定义的方法。
分配 UIWindow 对象以保存已分配的应用程序。
UIViewController 分配为窗口的初始视图控制器。
要使窗口可见,调用 makeKeyAndVisible 方法。
ViewController.h
#import <UIKit/UIKit.h> // Interface for class ViewController @interface ViewController : UIViewController @end
代码中的重要项目 -
ViewController 类继承自 UIViewController,后者为 iOS 应用程序提供了基本的视图管理模型。
ViewController.m
#import "ViewController.h" // Category, an extension of ViewController class @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
代码中的重要项目 -
此处实现的两种方法在基类 UIViewController 中定义。
在视图加载后调用的 viewDidLoad 中进行初始设置。
在内存警告的情况下调用 didReceiveMemoryWarning 方法。