转载

让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第12篇

欢迎继续我们的iPhone开发学习,接下来的内容应该是产品和设计人员的最爱-美化界面。

为了让玩家得到更好的沉浸体验,我们必须让产品的外在和内在一样美,甚至更美。

在这部分的内容中,我们将完成三个小的任务:

  1. 继续优化横屏显示

  2. 使用定制化的UI替代系统默认的界面

  3. 添加一个关于界面,来介绍这款应用~

在本篇内容中,我们首先完成第一个小任务- 优化横屏显示。

还记得我们的to-do list(待办事务清单)吗?里面有一条是“让应用在横屏模式下运行“。我们已经完成了这一任务,不过还可以进一步的优化。

在横屏状态下运行的应用不会显示IPhone的状态栏,除非我们强制显示。这一点会给我们的应用带来更多的展示空间,这当然是好事。

不过即便系统会自动隐藏状态栏,但我们仍然可以改进这款游戏处理状态栏的方式。

在Xcode中点击TARGETS下面的BullsEye,并在General设置的Deployment Info中找到Status Bar Style,然后勾选Hide status bar。

让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第12篇

当应用运行时隐藏状态栏是比较恰当的做法。操作系统需要花上一会儿将应用加载到内存中并将其启动,在这段时间里状态栏会保持可见,除非我们通过这个选项将其隐藏。

虽然这只是一个很小的可能不为人所注意的细节,不过真正伟大的应用和平庸之作的区别就在于这些细节。

好了,搞定了。

点击Run跑一下,会看到游戏界面的状态栏已经消失了。

接下来是科普时间,如果你是新手,很可能会看不懂。你可以选择现在来攻坚,也可以选择等以后熟悉iOS开发了再深入去了解。

科普:关于Info.plist文件

在任何一个iOS应用或游戏中,如同AppDelegate类一样,都有一个以项目名称开头的Info.plist文件,比如这里的Info.plist文件。

Info.plist是每个iOS应用都会有的配置文件,比如设备的朝向、状态栏是否在启动时可见等等,这些信息其实都保存在Info.plist文件中。

在之前的Xcode版本中,我们经常需要手动来编辑Info.plist文件。不过从Xcode之后基本上不需要这么做了,我们可以直接从刚才的Project Setting界面上完成。

不过了解下Info.plist的作用倒也没有什么坏处。

在Project navigator中找到Info.plist,点击并查看其中的内容:

让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第12篇

它的内容通常由三列组成,最左边是Information Property List(属性列表),中间是Type(属性值的类型),而最右边则是Value(属性值)。

Info.plist文件其实是一个XML文档。XML其实就是可扩展性标记语言(extensible markup language),它并非iOS中所特有的,在几乎任何一种编程语言的使用过程中,我们都会碰到XML文档。XML是所谓标准通用标记语言(SGML)的子集,其作用是以规范的形式(成对出现的标记)来保存数据。XML与传统的Access,Oracle,SQL Server, MySQL数据库不同。传统的数据库功能强大,提供了强大的数据存储和分析能力,而XML仅仅用来存储数据,需要自行编写代码来进行数据的分析和处理。但XML的好处是它超级简单易用,可以在任何语言编写的任何应用程序中读写数据,已经成了网络数据交互的唯一公共语言。

你可能不知道XML文档,但或许多半听说过HTML文档吧。XML文档只不过是HTML文档的规范式表达。它们的区别在于,XML的核心是数据内容本身,而HTML的核心是如何显示数据。

plist文件的本质就是XML文档,只不过其中的内容都和iOS应用的相关设置有关。

在Xcode中右键单击Info.plist,选中open as,选中source code,就可以看到下面的内容:

让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第12篇

很显然,plist文档其实就是满足苹果DTD标准的XML文档。

那么,Info.plist文件中这些键值的作用是什么呢?

这里大概说明一下,更详细的可以参考苹果的官方文档( https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html )

  • Localiztion native development region - 本地化相关,如果用户所在地没有相应的语言资源,则用这个key的value来作为默认.

  • Executable file - 程序安装包的名称

  • Bundle identifier - 该束的唯一标识字符串,该字符串的格式类似com.yourcompany.yourapp,如果使用模拟器跑你的应用,这个字段没有用处,如果你需要把你的应用部署到设备上,你必须生成一个证书,而在生成证书的时候,在apple的网站上需要增加相应的app IDs.这里有一个字段Bundle identifier,如果这个Bundle identifier是一个完整字符串,那么文件中的这个字段必须和后者完全相同,如果app IDs中的字段含有通配符*,那么文件中的字符串必须符合后者的描述。

设置程序安装后显示的名称。应用程序名称限制在10-12个字符,如果超出,将被显示缩写名称。

  • InfoDictionary Version- Info.plist格式的版本信息

  • Bundle name-产品名称

  • Bundle OS Type code-用来标识束类型的四个字母长的代码,

  • Bundle version string, short- 面向用户市场的束的版本字符串

  • Bundle version-应用程序版本号,每次部署应用程序的一个新版本时,将会增加这个编号,在app store上用的。

  • Application requires iPhone environment-用于指示程序包是否只能运行在iPhone OS 系统上。Xcode自动加入这个键,并将它的值设置为true。您不应该改变这个键的值。

  • Launch screen interface file base name -启动界面的文件名称

  • Main storyboard file base name- 一个字符串,指定应用的主storyboard文件名称

  • Required device capabilities-跟设备相关的属性设置

  • Status bar is initially hidden-这个字符串的作用应该很清楚了,就是刚才是否隐藏状态栏

  • Supported interface orientations- 程序默认支持的方向。

  • Supported interface orientations(iPad)- 程序默认支持的方向(iPad)。

好了,又见福利时间。

让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第12篇

未完待续~

正文到此结束
Loading...