01 a simple ios application
DESCRIPTION
一个简单的 iOS 应用TRANSCRIPT
![Page 2: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/2.jpg)
第⼀一个 iOS 应⽤用:Quiz
![Page 3: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/3.jpg)
views UIButton UIView
UIButton
UIControlUIWebView
UISearchBar
UIScrollView
UIAlertView...
UIDatePicker
UIPageContrl
UITextFieldUISliderUIButton...
![Page 4: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/4.jpg)
创建⼀一个 Xcode 项⺫⽬目
![Page 5: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/5.jpg)
Single View Application
![Page 6: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/6.jpg)
Mouse over -> 简介
![Page 7: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/7.jpg)
导航区域• Project
• Symbol
• Search
• Issue
•Debug
• Breakpoint
• Log
![Page 8: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/8.jpg)
Project navigator
• !les
• folders
• template groups
![Page 9: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/9.jpg)
构建界⾯面
![Page 10: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/10.jpg)
对象编辑器(Object editor)• interface builder - 创建和配置视图对象• XIB !le - archive
![Page 11: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/11.jpg)
XIB !le & NIB !le
• archived objects 的 XML 表⽰示•容易编辑•NIB !le
•更⼩小•易于解析•构建过程中 - 编译过的 NIB ⽂文件被拷⻉贝进了应⽤用程序的 bundle
![Page 12: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/12.jpg)
bundle
•⼀一个包含应⽤用程序可执⾏行⽂文件和可执⾏行⽂文件使⽤用的所有资源的⺫⽬目录
![Page 13: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/13.jpg)
NIB ⽂文件的加载•加载 NIB ⽂文件 - 使 archive 在其中的对象变得可⽤用
•只有⼀一个 NIB ⽂文件 - 当应⽤用程序第⼀一次启动时就被加载
•复杂的应⽤用程序可以拥有很多 NIB ⽂文件 - 被⽤用到的时候才被加载
![Page 14: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/14.jpg)
编辑器区域• dock view: 显⽰示 XIB ⽂文件中的对象
• dock view 可以展开成 Outline view
• canvas
![Page 15: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/15.jpg)
outline view -> three objects
• File’s Owner
• First Responder
• View
![Page 16: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/16.jpg)
canvas 部分•在 outline 中点击 View 对象 -> 在 canvas 中显⽰示
•在视图周围的蓝⾊色阴影区域拖动 -> 移动 canvas(重新组织 canvas)
•点击左上⾓角的 x 符号 -> 关闭视图
•在 canvas 区域的 view 对象 -> 和要在应⽤用程序中呈现的⼀一致
![Page 17: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/17.jpg)
utilities area
•四个额外的⽤用户界⾯面元素: 两个⽂文本标签和两个按钮•Xcode’s toolbar -> View:切换 navigator, debug area, 和 utilities area•点击右边的按钮以显⽰示 utilities area•utilities area 有两个部分: inspector 和 library•顶部是 inspector, 包含了当前显⽰示在编辑器区域的⽂文件的设置•底部的区域是 library, 列出了可以添加到⽂文件或者项⺫⽬目中的条⺫⽬目•相对⼤大⼩小 -> 拖动它们之间的线
![Page 18: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/18.jpg)
object library
•每个 section 上⾯面有⼀一个各类 inspector 和 library 的 selector
• object library: 包含可以添加到 XIB ⽂文件的 objects
• Label object
• search bar
![Page 19: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/19.jpg)
两个 Label 和 Button,⾏行为,外观和实例变量
•UILabel
•UIButton
•标签和按钮都是对象,对象具有指定他们⾏行为和外观的实例变量
•例如,当你给⼀一个按钮输⼊入⼀一个 title 时,你就设置了按钮的 title 实例变量
•你可以在canvas上直接编辑⼀一些实例变量,但是⼤大多数必须在”attributes inspector”中编辑
![Page 20: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/20.jpg)
attributes inspector
![Page 21: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/21.jpg)
Model-View-Controller
![Page 22: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/22.jpg)
MVC
•任何⼀一个对象都是下列之⼀一:• model 对象
• view 对象
• controller 对象
![Page 23: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/23.jpg)
View 对象•对⽤用户可⻅见•按钮,标签等,⼀一般是 UIView 的⼦子类
•⾃自定义视图类:DangerMeterView 或IncomeGrapView
![Page 24: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/24.jpg)
Model 对象•持有数据•对界⾯面⼀一⽆无所知•⼀一般使⽤用标准的集合类(NSArray,
NSDictionary,NSSet)
•标准数据类型:NSString, NSDate, NSNumber
•⾃自定义类
![Page 25: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/25.jpg)
controller 对象•应⽤用的管理者•保持 view 和 model 对象同步
•控制应⽤用流程•保存 model 对象到⽂文件系统
•可重⽤用程度较低•名字类似:ScheduleController,
ScoreViewController
![Page 26: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/26.jpg)
MVC 模式
![Page 27: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/27.jpg)
Quiz 对象图解
![Page 28: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/28.jpg)
声明
![Page 29: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/29.jpg)
声明• relationships
• responsibilities
• 5个实例变量
• 2个⽅方法•QuizViewController.h
![Page 30: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/30.jpg)
声明变量• questions
•指向包含 NSString 实例的 NSMutableArray 的指针
• answers
•另⼀一个指向包含 NSString 实例的 NSMutableArray 的指针
• currentQuestionIndex
•持有 question 数组中当前 question 索引的 int 变量
• questionField
•显⽰示当前问题的 UILabel 对象的指针
• answerField
•显⽰示当前问题答案的 UILabel 对象的指针
![Page 31: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/31.jpg)
code@interface QuizViewController : UIViewController
{ int currentQuestionIndex; // model 对象 NSMutableArray *questions; NSMutableArray *answers; // view 对象 IBOutlet UILabel *questionField; IBOutlet UILabel *answerField;}@end
![Page 32: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/32.jpg)
声明⽅方法@interface QuizViewController : UIViewController
{ int currentQuestionIndex; // model 对象 NSMutableArray *questions; NSMutableArray *answers; // view 对象 IBOutlet UILabel *questionField; IBOutlet UILabel *answerField;}
- (IBAction)showQuestion:(id)sender;- (IBAction)showAnswer:(id)sender;@end
![Page 33: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/33.jpg)
IBAction 和 IBOutlet
•把 controller 和 XIB ⽂文件中的 view 对象连接起来
![Page 34: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/34.jpg)
建⽴立连接
![Page 35: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/35.jpg)
connection
•两个对象可以⼀一起⼯工作• xib加载以后,controller 需要知道 Label 在内存中的位置,以告知他们显⽰示什么
• button 需要知道 controller 在什么地⽅方,以便在按钮按下后可以通知 controller
![Page 36: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/36.jpg)
当前的连接和需要建⽴立的连接
![Page 37: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/37.jpg)
missing connections
•QuizViewController, 需要有⼀一个指向 UILabel 实例的指针,这样 controller 就可以告诉 Label 显⽰示什么
•UIButton 实例必须有⼀一个指向 QuizViewController 的指针,以便可以在被按下时给 Controller 发送消息
![Page 38: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/38.jpg)
设置questionField指针
![Page 39: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/39.jpg)
设置answerField指针
![Page 40: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/40.jpg)
targets和actions
•点击 UIButton ,发送 message 到另⼀一个对象;
•被发送 message 的对象叫做 target
•message 称做 action,并且是 button 点击时被触发的⽅方法的名称
• button 要回答两个问题:target 是谁?action 是什么?
•对 Show Question ⽽而⾔言,我们希望 target 是QuizViewController, action 是showQuestion:
![Page 41: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/41.jpg)
targets和actions设置•按住 Control,从object(UIButton)拖到
target(File’s Owner)
•松开⿏鼠标,target 被设置,弹出菜单让你选择action
![Page 42: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/42.jpg)
设置targets和actions
![Page 43: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/43.jpg)
connections 概述•设置了指针 questionField 和 answerField 分别指向对应的 labels
•QuizViewController 是两个按钮的target
•项⺫⽬目模版⽣生成了⼀一个附加的 connection:QuizViewController 的 view outlet 被连接到了呈现应⽤用背景的 View 对象
![Page 44: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/44.jpg)
connections inspector
![Page 45: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/45.jpg)
实现⽅方法
![Page 46: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/46.jpg)
模板代码• viewDidLoad
• viewDidUnload
• shouldAutorotateToInterfaceOrientation
![Page 47: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/47.jpg)
initWithNibName:bundle:- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{ // 调⽤用⽗父类实现的init⽅方法 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // 创建两个数组,并且让指针指向他们 questions = [[NSMutableArray alloc] init]; answers = [[NSMutableArray alloc] init]; // 添加questions和answers到这些数组 [questions addObject:@"HTML5 中基于分辨率的画布元素叫什么名字?"]; [answers addObject:@"Canvas"]; [questions addObject:@"Web Sockets 使⽤用的是HTTP协议吗?"]; [answers addObject:@"不是"]; [questions addObject:@"Node.js 主要是前端脚本还是服务器端脚本?"]; [answers addObject:@"服务器端"]; } // 返回新对象的地址 return self;}
![Page 48: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/48.jpg)
code-completion 和 placeholders
• double-check 代码完成给出的建议
•注意使⽤用⾃自⼰己的参数换掉 placeholders
![Page 49: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/49.jpg)
IBOutlet
• view 对象⼀一般在 XIB ⽂文件中创建
•model 对象总是通过可编程的⽅方式创建
![Page 50: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/50.jpg)
实现两个 action
•修改 QuizViewController.m ⽂文件
•把下⾯面的代码放到 initWithNibName:bundle: 之后,@end 指⽰示符之前
![Page 51: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/51.jpg)
- (IBAction)showQuestion:(id)sender{ // 跳到下⼀一个问题 currentQuestionIndex++; // 判断是否到了最后⼀一个问题 if (currentQuestionIndex == [questions count]) { // 回到第⼀一个问题 currentQuestionIndex = 0; } // 拿到索引指定的问题数组中的字符串 NSString *question = [questions objectAtIndex:currentQuestionIndex]; // 在控制台打印字符串 NSLog(@"当前显⽰示问题:%@", question); // 在question field显⽰示字符串 [questionField setText:question]; // 清除答案字段 [answerField setText:@"???"];}
- (IBAction)showAnswer:(id)sender{ // 当前问题的答案是什么? NSString *answer = [answers objectAtIndex:currentQuestionIndex]; // 在答案字段显⽰示 [answerField setText:answer];}
![Page 52: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/52.jpg)
构建并在模拟器中运⾏行
![Page 53: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/53.jpg)
Build and Run on the Simulator
•编译并运⾏行:Command-R
![Page 54: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/54.jpg)
issue navigator
issue navigator:Command-4点击issue定位到源⽂文件和出问题的代码⾏行
![Page 55: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/55.jpg)
debug area
查看console
![Page 56: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/56.jpg)
应⽤用部署
![Page 57: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/57.jpg)
部署准备•开发者证书
• 使⽤用 Keychain Access 添加证书⽂文件到 Mac 的密钥链,⽤用来给代码进⾏行数字签名
• provisioning pro!le
• 位于开发设备和电脑上的⽂文件。包括⼀一个开发者证书,⼀一个单独的 App ID,以及可以安装这个应⽤用的设备的 device ID 的列表。后缀是:mobileprovision
• Device ID(UDID)
• 唯⼀一标识⼀一个 iOS 设备
• App ID 和 Bundle identi!er
• application identi!er 是⽤用于在 App Store 唯⼀一标识你的应⽤用的字符串,⼀一般看起来像这样:org.tfan.AwesomeApp
![Page 58: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/58.jpg)
部署流程• Xcode 使⽤用电脑上的 provisioning pro!le 访问适当的证书
•这个证书被⽤用来给 application 的⼆二进制⽂文件签名
•开发者设备的 UDID 被⽤用来跟 provisioning pro!le 中的 UDID 之⼀一进⾏行匹配,App ID 跟 bundle identi!er 进⾏行匹配
•签名后的⼆二进制⽂文件被发送到开发设备•在设备上的 provisioning pro!le 再⽤用来跟签名过的⼆二进制⽂文件进⾏行确认
•最后,启动
![Page 59: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/59.jpg)
Organizer窗⼝口
![Page 60: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/60.jpg)
在设备上运⾏行
![Page 61: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/61.jpg)
应⽤用图标
![Page 62: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/62.jpg)
图标•图标就是在iOS桌⾯面上表⽰示应⽤用程序的简单的图⽚片;
•不设置图标就是纯⽩白平铺的效果;
![Page 63: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/63.jpg)
不同的设备需要不同⼤大⼩小的图标
设备 图标⼤大⼩小
iPhone/iPod touch(⾮非Retina) 57x57像素
iPhone/iPod touch(Retina) 114x114像素
iPad 72x72像素
Retina iPad 144x144像素
![Page 64: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/64.jpg)
缩放•如果你只提供了⼀一个 57x57 像素的图⽚片,在需要更⼤大 icon 的设备上,图⽚片会被按⽐比例放⼤大。
•因此发布到 App Store 的应⽤用应该为每⼀一类设备都提供⼀一个 icon
![Page 65: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/65.jpg)
Icon的圆⾓角效果是iOS实现的
![Page 66: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/66.jpg)
代码和资源•代码(像QuizViewController.h和
QuizViewController.m)被⽤用来⽣生成应⽤用程序本⾝身;
•资源是指像图⽚片,声⾳音之类的应⽤用程序在运⾏行时需要⽤用到的东⻄西;
• XIB ⽂文件,在运⾏行时被读取,因此也属于资源
![Page 67: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/67.jpg)
在summary⾯面板添加Icon
![Page 68: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/68.jpg)
拖拽 image ⽂文件到 icon 区块• image ⽂文件被添加到项⺫⽬目
•QuizInfo.plist ⽂文件中多了两个条⺫⽬目
![Page 69: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/69.jpg)
启动图⽚片
![Page 70: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/70.jpg)
launch image 的作⽤用•应⽤用正在加载时显⽰示,否则⽤用户在此过程中只会看到⿊黑⾊色屏幕
•描绘应⽤用⼀一旦完成启动后⽤用户将要与之交互的⽤用户界⾯面
![Page 71: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/71.jpg)
launch ⽰示例
![Page 72: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/72.jpg)
不同设备的Launch image⼤大⼩小
设备 ⼤大⼩小
iPhone/iPod touch(普通) 320x480
iPHone/iPod touch(Retina 3.5-inch) 640x960
Retina iPhone 4-inch 640x1136
![Page 73: 01 A Simple iOS Application](https://reader038.vdocument.in/reader038/viewer/2022103018/558fc4de1a28ab83318b466e/html5/thumbnails/73.jpg)
Launch Images