如何快速找出哪里不符合xml格式_让不懂编程的人爱上iPhone开发(2018秋iOS12+Swift4.2+Xcode10版)-12...

e62a5b930b1fcaadd72af763a7b139d9.png

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

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

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

1.继续优化横屏显示

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

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

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

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

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

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

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

8f29327b71d477a10e6fa88275ec4c3e.png

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

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

好了,搞定了。

点击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,点击并查看其中的内容:

bd3f7eacb11d07cbbd885574d5ecd363.png

它的内容通常由三列组成,最左边是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,就可以看到下面的内容:

18fc5b69f07eb8ca393d124cd722b178.png

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

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

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

Localization 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)。

好了,又见福利时间。

b9074e49414ef8cf47fd60e2ba43159a.png

6490516adb40a7fe65acdff8c6fac3ba.png

答疑说明:

1.为了方便大家对课程中的问题提问,创建了一个问答社区。大家后续有开发相关的问题请到课程答疑专区提问http://icode.fun/ask/forum.php

2.请大家在提问之前建议先看一下这个帖子:http://icode.fun/ask/forum.php?mod=viewthread&tid=5&extra=page%3D1

联系方式:

公众号:icodefun

个人微信: iseedo

QQ讨论群:375143733

示例项目:

https://github.com/eseedo/iOSCourse

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值