欢迎继续我们的iPhone开发学习,接下来的内容应该是产品和设计人员的最爱-美化界面。
为了让玩家得到更好的沉浸体验,我们必须让产品的外在和内在一样美,甚至更美。
在这部分的内容中,我们将完成三个小的任务:
继续优化横屏显示
使用定制化的UI替代系统默认的界面
添加一个关于界面,来介绍这款应用~
在本篇内容中,我们首先完成第一个小任务- 优化横屏显示。
还记得我们的to-do list(待办事务清单)吗?里面有一条是“让应用在横屏模式下运行“。我们已经完成了这一任务,不过还可以进一步的优化。
在横屏状态下运行的应用不会显示IPhone的状态栏,除非我们强制显示。这一点会给我们的应用带来更多的展示空间,这当然是好事。
不过即便系统会自动隐藏状态栏,但我们仍然可以改进这款游戏处理状态栏的方式。
在Xcode中点击TARGETS下面的BullsEye,并在General设置的Deployment Info中找到Status Bar Style,然后勾选Hide status bar。
当应用运行时隐藏状态栏是比较恰当的做法。操作系统需要花上一会儿将应用加载到内存中并将其启动,在这段时间里状态栏会保持可见,除非我们通过这个选项将其隐藏。
虽然这只是一个很小的可能不为人所注意的细节,不过真正伟大的应用和平庸之作的区别就在于这些细节。
好了,搞定了。
点击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,点击并查看其中的内容:
它的内容通常由三列组成,最左边是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,就可以看到下面的内容:
很显然,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)。
好了,又见福利时间。
未完待续~