2013年9月17日
教程:iOS 7 入门
在 2013 年 9 月 10 日的苹果主题演讲活动上,该公司不仅推出了最新的 iPhone,还正式发布了 iOS 7,这是驱动所有苹果移动设备的最新操作系统版本。它计划于 9 月 18 日(明天!)向公众推出,并带来一些 Corona 开发者应该注意的事项。
首先,您现有的 iOS 6.1 及更早版本的应用应该可以正常运行,没有任何问题。 但是,您的 Corona 构建的应用必须具备一些条件才能在 iOS 7 上正常运行。
应用图标
在 iOS 7 中,苹果添加了一些新的图标尺寸,实际上在每个核心使用案例中都增加了几个像素。当然,您仍然应该支持 iOS 6.1 及更早版本,因此之前的图标尺寸仍然有效且必要。关于 iOS 图标的问题包括:
- 所需的图标图像文件的大小是多少?
- 我必须如何命名这些图标图像文件?
- 每个图标图像文件是否都需要精确且具体地命名?
- 它们是否必须在 build.settings 文件中列出,如果需要,在哪里列出?
现在让我们回答这些问题。 自 iOS 3.2 以来,苹果在名为 CFBundleIconFiles 的捆绑信息中使用了一个 plist。这是一个字符串数组,等同于您的应用程序中使用的图标的名称。在大多数情况下,命名方案相当灵活,这导致人们对图标应该如何命名产生了一些困惑。
为了让 Corona 开发者保持简单,您需要添加 4 个新的 必需 图标和 2 个新的 推荐 图标,总共 6 个新的图像文件。 请记住将这些文件放在您的核心项目文件夹内,而不是放在子文件夹内。
图标用途 | 推荐名称 | 尺寸 | 必需 |
iPhone/iPod | Icon-60.png | 60×60 | 是 |
iPhone/iPod (Retina) | [email protected] | 120×120 | 是 |
iPad 1/2、iPad Mini | Icon-76.png | 76×76 | 是 |
iPad 3/4 (Retina) | [email protected] | 152×152 | 是 |
Spotlight/设置 | Icon-Small-40.png | 40×40 | 推荐 |
Spotlight/设置 (Retina) | [email protected] | 80×80 | 推荐 |
为了最大限度地减少代码更改,我们建议保留您现在使用的现有图标文件名,然后只需将这些新图标添加到组合中。 然后,您的新 build.settings 文件将包含:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
settings = { iphone = { plist = { CFBundleIconFiles = { "Icon.png", "Icon-Small-40.png", "Icon-60.png", "Icon-72.png", "Icon-76.png", "Icon-Small-50.png", "Icon-Small.png", }, } }, } |
请参阅我们的项目构建设置指南,了解所需图标尺寸的完整列表。你们中的许多人可能没有包含较小的设置/Spotlight 搜索图标。
注意: 虽然这是一篇与 iOS 相关的文章,但我们从 每日构建版本 #1206 开始,还添加了 Android 的快速更新。 具体来说,Corona 现在支持新的 Android xxhdpi.png 图标,因此如果您要发布到 Android,则应包含它。 此新图标的大小为 144×144 像素 — 方便地与 iOS [email protected] 文件相同。
为 iOS 7 设置应用样式
也许 iOS 7 中最大的变化是全新的外观和感觉。 苹果已经大大“扁平化”了界面,摆脱了被称为拟物化的“真实世界”外观。换句话说,按钮不需要看起来像物理按钮才能正常工作。如果您是拟物化设计的粉丝,例如看起来像真实指南针的指南针应用程序,iOS 7 可能在视觉上对您没有吸引力。但是,对于那些讨厌拟物化设计的人(毕竟日历应用程序真的不需要“螺旋装订”),苹果已经站在了“更少的 UI 就是更多”的团队一边。
在游戏领域,这可能对您的开发影响很小。 然而,在商业和实用领域,业界正在大力推行扁平化设计并摆脱拟物化。
对于使用 Corona 当前 widget 库并设置为默认 iOS 主题的开发者来说,您知道这些小组件类似于 iOS 6.1 及更早版本中的原生小组件。现在,对于那些渴望开始为 iOS 7 设置应用样式的人,我们从 每日构建版本 #1206 开始,添加了 iOS 7 widget 主题。要使用它,只需在要求 widget 库后包含这行代码:
1 2 |
local widget = require( "widget" ) widget.setTheme( "widget_theme_ios7" ) |
当前的一个例外是 选择器轮小组件。 原生 iOS 7 使用一些 2.5D 可视化效果,其中轮子的顶部和底部略微倾斜,以提供深度感。 我们将在 Graphics 2.0 正式发布时将其添加到 Corona 选择器轮小组件中,但现在您的选择器轮将显示为平面。
字体
在大多数情况下,iOS 7 的新字体是 Helvetica Neue Light。 如果您想构建在排版方面与 iOS 7 相匹配的应用,您可能还需要使用此字体,例如:
1 2 3 4 5 6 7 8 9 |
local myButton = widget.newButton{ left = display.contentCenterX - 100, top = 360, label = "发送消息", width = 200, height = 48, font = "HelveticaNeue-Light", onEvent = onButtonEvent } |
幸运的是,这个字体在 iOS 6 和 iOS 7 以及 OS X 中都有包含。如果你想要一个更粗的版本,只需使用 “HelveticaNeue”。如果你需要 iOS 7 图片的模板,可以点击这里找到 Adobe Photoshop PSD 格式的图形元素 — 只需要确保你阅读并理解随下载文件提供的法律使用条款。最后,一篇描述 Apple 要求和建议的好文章可以在这里找到。
为 iOS 7 构建
公共版本 #1202 只能为 iOS 6.1 及更早版本构建,但是此后的每日构建版本有一个额外的对话框选项,叫做 iOS SDK,我们在任何时候都有两个版本的 iOS SDK 可供构建时都会包含此选项。截至每日构建版本 #1203,选择 iOS 7 将会基于“iOS 7 Gold Master seed”进行构建。这意味着你可以使用此选项向 Apple 提交构建版本。每日构建版本 #1203 – #1206 将此列为“Beta”,但它是 GM seed,而不是 Beta 版本之一。
虽然我们使用的是 iOS 7 GM seed SDK,但它仍处于测试模式。我们正在解决最后的一些细节问题,然后再启用针对 iOS 7 目标的应用程序提交。但是,你应该针对它进行测试,并且在进行测试之前还有一些其他的软件要求
- 为 iOS 7 构建需要 XCode 5。Apple 今天在 Mac App Store 中免费提供了 XCode 5 的下载。这将会覆盖你现有的 Xcode 4.x 安装。
- 你必须运行 OS-X Mountain Lion (10.8) 或更高版本才能运行 XCode 5。
如果你一直在运行 XCode 5 的开发者预览版,但是你需要恢复到使用 4.x 构建,或者如果你想使用 XCode 5 GM Seed,你需要使用以下命令行 (终端) 命令进行指定
1 |
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer |
总结
iOS 7 为 iOS 带来了全新的外观,同时引入了许多新功能和 UI 改进。作为 Corona 开发人员,你现在就可以为 iOS 7 构建,并开始实现新的小部件主题。立即下载每日构建版本 #1206,它对 Corona SDK Pro 订阅者可用,开始你的开发吧。
J. A. Whye
发布于 14:34, 9 月 17 日好消息!
一个简单的问题 — 我们多久才能在 widget 库的 github 版本中看到 iOS7 主题文件?
Brian Berg
发布于 15:16, 9 月 17 日在文章中展示的表格中,“Icon-Small-40.png” 被显示为 40×40 和 80×80 图标的推荐名称。然后在 build.settings 示例中,它们被列为 “Icon-40.png”, “[email protected]”。 应该使用哪种方式?
Rob Miracle
发布于 15:20, 9 月 17 日build.settings 是正确的。
Kyle
发布于 19:37, 9 月 17 日感谢详细说明这些更改。
当使用 2013.1207 为 App Store 构建时,我收到提示“Distribution Code Signing Identities are not allowed with Beta SDKs”(分发代码签名标识不允许使用 Beta SDK),目标是使用 Xcode 5 GM 的 iOS 7。我错过了什么吗?
此外,是否有用于指定浅色与深色状态栏内容的 API?
Rob Miracle
发布于 15:07, 9 月 18 日嗨,Kyle。我会向工程师提出这个问题,看看签名问题是怎么回事。我还没有看到任何用于控制状态栏内容的新增内容。
dingo
发布于 23:54, 9 月 17 日那么对于企业用户...我们将构建目标设置为 7.0,并将部署目标保持在 4.3?
Walter
发布于 15:17, 9 月 18 日我们建议你将基本 SDK 保留在 6.1(而不是 7.0)。这样,你可以最大限度地减少在 iOS 7 中引入的几个错误。
作为背景,当你将基本 SDK 设置为 iOS 6.1 时,iOS 7 设备将识别该应用程序的基本 SDK,并且(或多或少)按照 iOS 6 的方式执行操作。另一方面,当你将基本 SDK 设置为 iOS 7 时,你是在告诉设备你的应用程序了解 iOS 7 的错误/行为更改,因此假设你的应用程序可以处理它。我们正在调查后一种情况的解决方法。
dingo
发布于 22:54, 9 月 18 日谢谢 Walter!所以这意味着,一旦有针对 iOS 7.0 中错误的解决方法,我们就可以将其用作基本 SDK。在那之前,我们应该使用 6.1。
Dave Baxter
发布于 01:09, 9 月 18 日如果我们为 iOS7 构建,那么我们的应用程序是否需要 iOS7 才能工作?
如果不是,那么它仍然是 5.1 或更高版本吗?
Dave
Rob Miracle
发布于 15:05, 9 月 18 日我认为 Corona 尚未内置任何 iOS7 功能,因此 iOS 6 和 5 设备仍然应该能够运行你的应用程序。一旦我们开始利用仅限 iOS 7 的功能,那么当然这些功能需要 iOS 7 才能实际工作。
Doug Davies
发布于 14:13, 9 月 18 日太棒了!感谢提供这个。
Nicolas Michaud
发布于 11:45, 9 月 19 日你们是否计划支持设置状态栏颜色的功能?IOS 7 支持这个很棒的功能,可以将状态栏与应用程序匹配起来。
谢谢
Nick
lessmsios
发布于 12:40, 9 月 19 日“每个应用程序都应该做”的项目之一是
采用动态类型。在 iOS 7 中,用户可以调整他们在应用程序中看到的文本大小。当你采用动态类型时,你会获得能够适当响应用户指定的大小更改的文本。
如果 Corona 支持这一点就太好了!
Rob Miracle
发布于 15:56, 9 月 19 日嗨,Lessmsios。这是一个很好的建议。你可以前往 http://feedback.coronalabs.com 在那里添加请求并投票支持它。任何阅读此消息的人,如果你想支持动态类型,也请投票支持它!
Borja Pérez
发布于 12:52, 9 月 19 日在为 iOS 7 构建时,我们如何更改状态栏的外观?我只能显示黑色的状态栏,但我想让它是白色的,以便更好地适应我的应用程序的配色方案。我该怎么做?
Rob Miracle
发布于 16:02, 9 月 19 日嗨,Nicolas 和 Borja。 你可以使用以下代码实现:
display.setStatusBar(display.DefaultStatusBar) — 将显示白色文本
display.setStatusBar(display.DarkStatusBar) — 将显示黑色文本
这将在下一个每日构建版本 1210 中生效。
Nathan
发布于 20:20, 1 月 4 日嗨,Rob,
我知道这是一个非常旧的评论,但它似乎不再起作用了 - display.setStatusBar(display.DefaultStatusBar) 仍然将字符保留为黑色?
谢谢,
Nathan。
Clark Olmsted
发布于 14:40, 9 月 19 日Apple 是否会开始拒绝不针对 iOS7 SDK 构建的应用程序?如果是这样,那么在未来几周内提交时,这是我们需要担心的事情吗?
Rob Miracle
发布于 16:03, 9 月 19 日我怀疑他们在未来几周内会这样做。他们倾向于支持某个操作系统几个构建版本,因此人们理论上仍然可以提交基于 5.x 的应用程序。
lessmsios
发布于 17:47, 9 月 19 日使用构建版本 2013.1209,我也收到错误“Distribution Code Signing Identities are not allowed with Beta SDKs”。我从未安装过 Xcode 5 的 beta 版本,但今天安装了 Xcode 5 的正式版本。
由于 iOS SDK(对于 7)中唯一的选项是“7.0 beta”,这是否意味着现在没有 Corona Pro 用户可以构建用于 7.0 发行的版本?真是糟糕!
Rob Miracle
发布于 17:53, 9 月 19 日我们已经更新了帖子。基本上,即使在 Corona 中为 iOS 7 构建使用的是 GM SDK,我们也要等一段时间才能进行更多内部测试,然后再开放 iOS 7 进行分发。我们将 beta 标志保留一段时间。你会注意到,在 1209、明天的 1210 和可能更多版本中,我们正在解决一些与 iOS 7 相关的错误。当你可以提交 iOS7 版本时,我们会通知你。在此期间,如果你需要提交,请使用 iOS 6.1 选项。
Dave Baxter
发布于 05:56, 9 月 20 日我只是将一部 iOS7 手机插入到我的笔记本电脑中,因为我想在上面测试我最新的游戏。但是你需要 xCode 5 才能安装该应用程序,xCode 4 只会说它无法与此版本的 iOS 一起使用。
因此,对于任何(像我一样)无法拥有 xCode 5 的人,请不要将你的设备升级到 iOS7,因为你将无法使用它们进行测试。
Dave
Rob Miracle
发布于 14:47, 9 月 20 日很好的警告,Dave!
Julius Bangert
发布于 12:59, 9 月 20 日上面的 build.settings 示例中是否有错误?
应该说
“Icon-Small-40.png”,
“[email protected]”,
而不是
“Icon-Small-50.png”,
“[email protected]”,
Rob Miracle
发布于 15:29, 9 月 20 日嗨,Julius。谢谢你的提醒。实际上,Icon-Small-50.png 及其 @2x 版本是 iPad 的 Spotlight 搜索/设置图标。与任何“Small”图标一样,它们是可选的但建议使用。
从技术上讲,文件的名称并不重要,因此 Icon-40.png 也可以使用,但我已经更新了帖子,使其与上面的表格以及其他“Small”图标保持一致。
Marcus
发布于 01:56, 9 月 21 日在 iOS 7 的新小部件主题中,选项卡栏的外观和感觉似乎没有变化。
Rob Miracle
发布于 15:13, 9 月 23 日小部件主题仅影响诸如开关和滑块之类的东西(以及选择器轮)。tabBar 是你为之提供自己的图形的小部件,因此你必须更改它们。我们没有魔法方法来了解你的 tabBar 背景图像是什么以及它看起来是什么样子。按钮的情况也类似。如果你为它提供自己的图形,我们无法真正更改它。widget.newButton 的主要变化是它现在支持仅文本按钮的概念。
我一直在处理一些将它们转换为 iOS 7 外观的应用程序,对于 tabBar,我采用了构成所选选项卡的 3 个切片,并使其透明,使用默认按钮和按下按钮的图形来为所选的选项卡图标着色。然后我采用了 tabBar 背景图像,并将其设置为白色。
Emerson Hsieh
发布于 16:57, 9 月 21 日只是一个问题,如果我想让我的应用程序在 iOS 6 和 7 中都能工作,我是否必须为 iOS 6.1 和 7 构建两个单独的构建版本并分别提交到 App Store,或者我是否可以只为 iOS 6.1 构建并提交到 App Store,并希望它能在 iOS 7 设备上运行?谢谢
Rob Miracle
发布于 17:04, 9 月 21 日你的 iOS 6.1 应用程序应该可以在 iOS 7 上正常运行。在某个时候,Apple 会希望看到 iOS 7 图标,当然也会鼓励你针对 iOS 7 SDK 构建。
greg
发布于 00:05, 9 月 25 日我刚下载了 2013.1214 版本,没看到 iOS6 和 iOS7 的构建选项。另外,我在发布说明中看到“iOS – 默认切换为使用 iOS7 构建”。
我是否可以认为现在我们实际上都在 iOS7 上构建,无论如何?
Rob Miracle
发布于 9 月 25 日 16:35iOS 7 SDK 向后兼容 iOS6 和 iOS5 SDK,是的,iOS 7 已经正式使用了。
Eduardo Schnell s Schuhli
发布于 9 月 26 日 14:43有没有人遇到过启动应用程序时出现黑屏的情况?
应用程序编译正常,但是启动后,在闪屏之后会进入黑屏。
xcode 4.7 – corona 1202 – 正常
xcode 4.7 – corona 1216 – 黑屏
xcode 5.0 – corona 1202 – 正常
xcode 5.0 – corona 1216 – 黑屏
我是否遗漏了什么?
br,
Edu
Rob Miracle
发布于 9 月 27 日 14:09嗨 Eduardo。在我们能确定地帮助你之前,你需要提供你设备控制台日志中的一些内容。如果你不知道如何获取,请阅读这篇博客文章:http://www.coronalabs.com/blog/2013/07/09/tutorial-basic-debugging/
考虑到你提到的时间范围,这很可能是由于新的 Transitions 2.0 库中的一些更改导致的,但在我们了解你的代码中发生了什么之前,我们只能猜测。请在论坛中发布此问题以及你的控制台日志结果,在那里我们可以更好地促进与你的沟通。博客评论很适合简单的问答,但当我们需要来回交流时,论坛会更好。
谢谢
Rob
Katherine
发布于 2 月 19 日 03:23构建存在问题。更改按钮的 x 位置实际上不起作用。我还看到一个空格。就像电池指示器也向下移动了 40px。为什么?
这让我有点不想购买 PRO。我曾经是 PRO 用户。
Rob Miracle
发布于 2 月 19 日 17:19嗨 Katherine。你指的是上面的 widget.newButton 示例吗?它的定位基于顶部和左侧方案,这可能是因为我那样做了,它没有使用等效的中心参考点。
我建议你发布一个论坛帖子,附上一些示例代码,并告诉我们你正在使用的 Corona SDK 版本,这样我们就能更好地帮助你。
Rob