《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模拟器存在上面的这些限制,但对于一般应用程序来说还是足以应付的,只不过它还不能完全代替在真机上的测试。

相关文章
|
1天前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
14 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
3月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
353 4
|
3月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
68 2
|
3月前
|
JSON 数据处理 Swift
Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用
本文深入探讨了 Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用。URLSession 由苹果提供,支持底层网络控制;Alamofire 则是在 URLSession 基础上增加了更简洁的接口和功能扩展。文章通过具体案例对比了两者的使用方法,帮助开发者根据需求选择合适的网络编程工具。
64 3
|
3月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
72 2
|
3月前
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
84 4
|
3月前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
85 9
|
3月前
|
JSON 前端开发 API
探索iOS开发之旅:打造你的第一个天气应用
【10月更文挑战第36天】在这篇文章中,我们将踏上一段激动人心的旅程,一起构建属于我们自己的iOS天气应用。通过这个实战项目,你将学习到如何从零开始搭建一个iOS应用,掌握基本的用户界面设计、网络请求处理以及数据解析等核心技能。无论你是编程新手还是希望扩展你的iOS开发技能,这个项目都将为你提供宝贵的实践经验。准备好了吗?让我们开始吧!
|
3月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
96 1
|
3月前
|
安全 API Swift
探索iOS开发中的Swift语言之美
【10月更文挑战第23天】在数字时代的浪潮中,iOS开发如同一艘航船,而Swift语言则是推动这艘船前进的风帆。本文将带你领略Swift的独特魅力,从语法到设计哲学,再到实际应用案例,我们将一步步深入这个现代编程语言的世界。你将发现,Swift不仅仅是一种编程语言,它是苹果生态系统中的一个创新工具,它让iOS开发变得更加高效、安全和有趣。让我们一起启航,探索Swift的奥秘,感受编程的乐趣。

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    swift:自动引用计数ARC
  • 7
    Swift中常量和变量的声明
  • 8
    快看Sample代码,速学Swift语言(2)-基础介绍
  • 9
    9.Swift学习之数组
  • 10
    swift(MJRefresh框架)的使用
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    143
  • 7
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    235
  • 8
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    90
  • 9
    深入探索iOS开发中的SwiftUI框架
    145
  • 10
    ios样式开关按钮jQuery插件
    60