《Swift iOS应用开发实战》——1.5 iOS模拟器

简介:

本节书摘来自华章计算机《Swift iOS应用开发实战》一书中的第1章,第1.5节,作者:刘铭 著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 iOS模拟器

iOS模拟器是一个运行在Mac上面的应用程序,它允许我们在不使用iOS真机设备的情况下调试所编写的程序项目。它属于iOS SDK的一部分,所以在安装Xcode的时候会直接被装入Mac系统之中。当我们在Xcode中运行应用程序时,可以选择项目是在模拟器中运行还是在真机上面运行。如果选择模拟器,则Xcode会在成功编译代码以后自动将其打开。
下面来设置HelloWorld项目的运行设备。
1)点击工具栏中停止按钮右侧的Scheme字段,(项目名称右侧,“>”后面的部分),此时弹出的菜单中列出了iOS Device、iPhone 4s、iPhone 5、iPad 2、iPad Retina、iPad Air等可选项,如图1-27所示。

image

从Xcode 6开始,我们就不能在iOS模拟器中模拟iPhone 4s之前的设备以及第一代iPad设备了,因为这些设备无法支持iOS 7以上的系统。
1.5.1 iOS模拟器的特性
我们可以使用iOS模拟器模拟不同的设备,其中包括iPhone和iPad系列产品。在系统版本方面,Xcode 6只支持iOS 7和iOS 8。模拟器在运行的时候,可以通过菜单中的“Hardware→Device”来改变iOS的版本,如图1-28所示。
如果需要安装其他不同版本的iOS SDK,需要在Xcode菜单中选择“Preferences→Downloads→Components”,之后选择相应的版本下载即可。

image

通过“Hardware→Device”菜单操作,我们可以在模拟器中切换不同的设备。根据iOS版本的不同,所模拟的设备也有所不同。iOS 8.0比7.1增加了Resizable iPhone和Resizable iPad两个选项,据说这两个选项与iOS 8可能加入的多窗口操作有关。
通过iOS模拟器菜单中的“Rotate Left”(Command+←快捷键)或“Rotate Right”(Command+→快捷键)来调整模拟器的方向,如图1-29所示。
iOS模拟器允许我们模拟一个或两个手指的多点触摸操作。一个手指的操作,比如点击、长按、划动等都可以通过鼠标很好地模拟。实现两个手指的操作需要按住键盘上的Option键,然后按住鼠标拖曳来模拟缩放操作。如果要移动两个手指在屏幕的中心位置,则需要同时按住Shift和Option两个键。想要在模拟器中实现iOS设备的摇动效果,可以通过“Hardware→Shake Gesture”(Control+Command+Z快捷键)来完成。
如果我们开发的应用程序需要地图数据,可以在应用程序运行的时候,使用iOS模拟器模拟一个位置。选择“Debug→Location→Custom Location”,然后输入经纬度数值即可,如图1-30所示。
image

iOS模拟器还可以模拟一个移动的位置,当设计的应用程序需要获取实时改变的地理位置时,这个功能就显得非常有用。iOS模拟器可以模拟的位置包括如下这些:
Apple: 苹果总部。
City Bicycle Ride:在城市中骑自行车。
City Run:在城市中跑步。
Freeway Drive:无确定方向的驾驶汽车。
如果我们开发的应用程序允许用户打印一些东西,在没有兼容AirPrint打印机的情况下,可以使用打印机模拟器模拟打印。打印机模拟器不会在程序启动时自动运行,需要选择“File→Open Printer Simulator”。
1.5.2 模拟器中iOS系统的基本设置
在安装好Xcode后,模拟器中运行的iOS默认语言是英文,默认区域格式是美国,而且输入法也仅有英文一种。作为中国的程序员,我们希望将模拟器设置成和国内iPhone手机用户一样的使用环境,所以需要进行下面几步操作:
1)在Xcode菜单中选择“Xcode→Open Developer Tool→iOS Simulator”。
2)在模拟器的主屏上点击“Settings→General→ Language & Region→iPhone Language”,将语言设置为简体中文。当点击右上角的“Done”按钮以后,会弹出一个确认框,如图1-31所示。在点击确认以后,系统的语言就变成了简体中文。

image


3)在“设置→通用→语言与地区”中将“地区”设置为中国。此外,在语言与地区界面中我们还可以看到“区域格式示例”,包括时间、日期、货币和数字格式。
4)进入“设置→通用→键盘→键盘”,确定其中有简体中文的输入法。如果没有,则选择添加新键盘,选中“简体中文”即可,这样在虚拟键盘中就可以输入中文了。
iOS模拟器最主要的目的就是有效节省程序员开发的时间,如果一个应用程序要在真机上调试,需要经过上传、安装、运行这三个阶段,而这将花费很长的时间,因为哪怕是一点点代码的修改,每次测试都需要经历这三个阶段。假如这个应用程序中包含了大量的图片、音频或视频文件,相信这将是对开发人员耐性的一个巨大挑战。
在iOS模拟器上应用程序的运行效果(如执行速度、切换视图的平滑程度等)并不等同于在iPhone真机上的运行效果,毕竟iPhone的硬件无法与Mac相比,而且每代iPhone手机的推出都伴随着CPU性能的增强。避免这种情况的最好方法就是在真机上进行测试(一个成熟的应用至少需要在2~3种iOS设备上进行测试),如果仍然出现上述问题,就需要优化算法。
1.5.3 在模拟器中安装和卸载应用程序
如果在Xcode中运行应用程序项目,该项目就会被自动安装到模拟器之中。
我们不能删除iOS模拟器中默认的应用程序,如照片、通讯录、设置、Game Center、报刊杂志和Safari。要卸载(删除)iOS模拟器中自己编写的应用程序,操作步骤和真机上是一样的。
1)在应用程序图标上按住鼠标,直到图标开始摇晃。
2)当图标摇晃的时候,可以看到其左上角有一个“X”按钮。点击要删除应用程序图标左上角的“X”按钮,此时弹出警告对话框确认删除操作,如图1-32所示。

image


4)点击“删除”按钮,确认卸载操作。
对于代码存有Bug的应用程序,在模拟器中运行的时候可能会引起崩溃。此时Xcode将会运行代码调试器,进入Debug状态。我们只要点击Xcode工具栏中的“Stop”按钮就可以结束应用程序在模拟器中的运行并关闭代码调试器。
5)如果想快速清空模拟器中的全部应用程序,可以选择“设置→通用→Reset”,点击“还原位置与隐私”,在弹出的警告视图中点击“还原警告”即可。
1.5.4 iOS模拟器的限制
尽管iOS模拟器可以完美地运行我们编写的iOS应用程序,但还是有一定的局限性的,它不能完成下面这些操作:
模拟手机来电的状态
使用重力加速器和三轴陀螺仪
发送和接收短信息
从App Store上下载安装应用程序
使用前后置摄像头
使用设备的麦克风(如果开发设备具备麦克,则可以使用)
一些OpenGL ES的核心特性
尽管iOS模拟器存在上面的这些限制,但对于一般应用程序来说还是足以应付的,只不过它还不能完全代替在真机上的测试。

相关文章
|
2月前
|
iOS开发 开发者
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
|
2月前
|
开发者 iOS开发
iOS应用上架详细图文教程(上)
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些事。
|
2月前
|
Swift iOS开发 开发者
iOS 应用上架流程详解
iOS 应用上架流程详解
|
2月前
|
Android开发 iOS开发 UED
appuploader   iOS 应用自动发布
appuploader   iOS 应用自动发布
|
3月前
|
存储 监控 iOS开发
iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。 克魔助手会提供两种日志,一种是实时的,一种的是崩溃的。(由于崩溃日志的环境很麻烦,目前只展示实时日志操作步骤)
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
2月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
|
3天前
|
存储 编解码 JSON
利用SwiftUI构建高效iOS天气应用
【4月更文挑战第21天】 在本文中,我们将深入探讨如何运用SwiftUI框架打造一个响应迅速且用户友好的iOS天气应用程序。我们将重点放在利用SwiftUI的声明式语法简化界面开发,并通过结合Core Location和Networking APIs实现实时天气数据的获取与展示。文章将详细阐述整个开发过程,包括API集成、数据模型设计、用户界面布局以及动态适配不同屏幕尺寸的策略。
|
1月前
|
安全 数据安全/隐私保护 虚拟化
iOS应用加固方案解析:ipa加固安全技术全面评测
iOS应用加固方案解析:ipa加固安全技术全面评测
37 3
|
1月前
|
运维 监控 安全
应用研发平台EMAS常见问题之sophix ios flutter热更新如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
77 0