如果我使用 iPad 尺寸创建应用程序,如何找到 iPhone 尺寸的“安全区域”?

2024-01-11

我正在创建一个游戏,想要使用 iPad 尺寸设置(横向:1024x768)。据我所知,使用 iPad 设置只会在 iPhone 上裁剪掉部分高度。假设我有一张 iPad 的 2048x1536 背景图像 (1024x768) 和 iPhone 6+ 的 2208x1242 图像 (736x414),

我。如何确定 iPad 上出现在 iPhone 6+ 上的点和像素上的“安全区域”?

二. iPhone 6+ 的“安全区域”与具有 1334x750 图像的 iPhone 6 (667x375) 相同吗?如果不是,如何同时确定点和像素?


我假设您希望创建一款可以在 iPad 和 iPhone 上运行的通用游戏。如果是这种情况,在属性检查器(选择 Assets.xcassets 时位于 Xcode 界面的最右侧)中定义图形资源时,有两种可能的方法。在“设备”部分,您可以在通用设备、iPhone、iPad、Apple Watch、Apple TV、Mac 及其任意组合中进行选择。

  1. 如果您仅选择“通用”,那么您必须确保您插入的资源在 iPhone 和 iPad 上都能正常显示。如果是这种情况,请参阅下面的一些提示,了解如何使您的资产能够安全地普遍使用。

  2. 如果您选择“iPad”和“iPhone”,则必须包含 iPad 和 iPhone 的单独资源及其适当的分辨率和宽高比。根据我过去的经验,我一直都是这样走的。对于 iPad (1x),您必须提供 1024x768 背景,对于 iPad (2x),您必须提供 2048x1536 背景,除非您选择“单比例”并使用单个矢量 PDF 文件。分别,对于 iPhone,您必须提供 480x320(1x,仅在您需要支持 iPhone 3G/3GS 等旧设备的情况下,考虑到 Sprite-Kit 是随 iOS7 引入的事实,这种情况不太可能发生),然后是 1334x750(2x )和 2208x1242(3x,对于 iPhone 6+、6S+、7+)。通过这种方法,您无需担心“安全”区域,因为您提供的图形将在每个设备上正确使用,而不会“切割”边缘。请记住,iPhone 4S 和 iPhone 5/5S/SE 需要进行一些背景缩放才能将整个 2 倍图片显示在屏幕上。否则看起来会被放大。

如果您采用第一种方法,那么您应该考虑以下信息,以使您的“通用”图形可以安全地用于所有设备: iPhone 5/5S/SE...以及所有更新机型的显示宽高比均为 16:9。 iPhone 4S 的宽高比为 3:2(您只需担心您的游戏是否支持 iOS 9)。 iPad 屏幕长宽比为 4:3。

考虑到上述情况,您可以选择两条路: 1. 使用 16:9 通用资源,在 iPad 和 iPhone 4S 上将其左/右部分切除。 2. 使用 4:3 通用资源,在 iPhone 上将其上/下部分切除。

上述内容适用于您的 2x 资产,因为这些资产将用于 Retina iPad 和 Retina iPhone(4S、5/5S、SE、6/6S/7)。

1x 资源仅用于非视网膜 iPad(如果您支持 iOS 9,则为 iPad 2,否则也请跳过这些)。

3x 资源将仅用于“Plus”iPhone 型号。因此,我建议您仅以 16:9 比例 (2208x1242) 提供这些。

那么,您如何计算您的“安全”区域。非常简单:

案例 1(16:9 资源也适用于 iPad):高度 1536(这是 iPad 视网膜高度,以像素为单位,但如果您希望在 iPad Pro 12.9" 上实现像素完美,那么您应该将其增加到 2048),宽度 = 1536 * 16 / 9 = 2732 像素宽(iPad Pro 支持为 3640 像素)。请注意,您必须在运行时缩小它以适合 iPhone。为了避免截断重要内容您的背景,请勿在 2732x1536 通用图像的中间 2048 像素的左侧或右侧放置任何内容(左侧和右侧各 342 像素“危险”区域)。如果您使用 3640x2048 图像(支持 iPad Pro 12.9" ),然后只使用中间的 2732 像素,在 454 像素宽的左右边界中只留下不重要的东西。

情况 1b(与上面相同,但图像较小):另一种方法是使用原生 (iPhone 6/6S/7) 1334/750 像素图像,但随后您必须针对 iPad 放大,针对 iPad 缩小iPhone 4S/5/5S/SE。在这种情况下,您的“安全”区域为 1000x750(在 4:3 iPad 和 16:9 iPhone 上均可见)。

情况 2(4:3 资源也适用于 iPhone):对于 2x 资源,使用 2048x1536 像素图像。根据您在屏幕上放置精灵的方式,上部和/或下部会出现损失。如果它居中,那么您的“安全”区域为 2048 / 16 * 9 = 1152,这导致 2048x1152 位于 2048x1536 资源的中间。

如果您需要任何进一步的说明,我将很乐意详细说明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我使用 iPad 尺寸创建应用程序,如何找到 iPhone 尺寸的“安全区域”? 的相关文章

随机推荐

  • 在大型分箱数据集上使用“ggplot”时出现内存泄漏

    我正在制作各种ggplot在非常大的数据集上 比示例大得多 我在 x 轴和 y 轴上创建了一个分箱函数 以便能够绘制如此大的数据集 在下面的示例中 memory size 是在开始时记录的 然后将大数据集模拟为dt dt s x2是针对x1
  • SQL Server 的自定义处理器 + DBCPConnectionPool:未加载驱动程序 jar

    I have created a controller service to connect to a test db 我有一个自定义处理器 可以从 SQL Server 读取数据 模拟测试 构建和部署到 NiFi 都成功 处理器遇到错误
  • PHP 5.5.X 及更高版本中是否需要再使用 & 符号?

    我到处都收到混合信号 我是否使用 符号通过引用传递变量 以下链接似乎告诉我它已被弃用并且不再需要 http gtk php net manual en html tutorials tutorials changes references
  • 我可以将 LayoutPrams 与 ViewGroup.addView 一起重复使用吗?

    Does ViewGroup addView clones LayoutParams数据放到里面还是链接到呢 我可以重用同一个实例吗LayoutParams多次调用addView 有不同的看法吗 apidoc 中没有任何相关内容 WOW 答
  • 压缩后的位图质量=比原始文件大小大 100 倍

    我正在尝试将图像发送到服务器 在发送之前 我会减小其大小和质量 然后解决任何旋转问题 我的问题是 旋转图像后 当我保存它时 文件比以前大 旋转前大小为 10092 旋转后大小为 54226 Scale image to reduce it
  • 表值函数和实体框架

    我正在尝试使用实体框架执行 TVF 但由于某种原因它不起作用 也许那里的任何人都可以帮助我解决这个问题 以下是代码示例 这就是函数 CREATE FUNCTION dbo udf profileSearch keywords NVARCHA
  • Kotlin:创建自定义 CoroutineContext

    我在 API 后端使用 Kotlin 我不想在中运行数据库查询common pool 基本上 我想创建一个CoroutineContext有许多与数据库匹配的线程maximumPoolSize 完成此任务的最佳方法是什么 一般情况下以及针对
  • 为什么有些项目的 use 子句接受 Jpeg,而其他项目则需要 vcl.imaging.jpeg?

    我正在将一些项目更新到 XE2 但我不明白为什么在某些项目上 uses jpeg 被接受 在其他方面我需要写 uses vcl imaging jpeg 你能给我解释一下吗 差异在于各个项目的项目选项中的单元范围名称设置 如果你有Vcl I
  • 如何用单斜杠替换特殊字符

    我有一个关于 Java 中字符串的问题 比方说 我有一个像这样的字符串 String str The startup trace state is info 由于字符串包含特殊字符 例如 我需要将字符串替换为 根据我的要求 如何替换特殊字符
  • R {targets} 包:如何使用字符串引用现有目标?

    我正在使用 targets 包 尝试根据现有目标创建新目标 虽然通过以 NSE 样式键入名称来引用现有目标很简单 但通过使用字符串作为 别名 却无法做到这一点 只是为了清楚我在说什么 我会表明我的意思outside the targets
  • 在 DatePickerDialog 中以数字格式而不是字母顺序显示月份字段

    下图显示了我在 Android 应用程序中的当前日期选择器 但是我想将所有月份显示为 01 02 03 12 而不是一月 二月 三月 十二月 任何帮助将不胜感激 你可以自己设计Dialog with NumberPicker 但如果你仍然想
  • Symfony 一次性实例化一项服务并与多个用户一起使用

    我正在尝试做一项仅实例化一次的服务 然后当新用户访问我的主页时 我可以在需要时重新使用它 我想做的是一个实例化后设置日期时间的服务 当任何用户连接到我的主页时 我会向我的服务发送一个日期时间 然后比较两个日期时间 实例化服务时的日期时间和用
  • 将 AWS API Gateway API 端点的 IP 列入公司防火墙中的白名单

    我已经构建了一个 AWS API Gateway API 端点 该端点将被我公司网络中的一台机器命中 以每隔一定时间间隔发布数据 但是 当我通过 Postman 从办公室网络尝试它时 办公室防火墙会阻止它 但是当我使用移动热点 其他 wif
  • 分配变量并显示结果

    我收到 T ECHO 意外错误 完成上述任务的正确方法是什么 我稍微扩展一下这个问题 这是一段 wordpress 代码 get option 函数不回显该值 所以我尝试了
  • java - HashMap 中的内容适当的数据

    想象一下您有一本学生评价日记 每个学生在日记中都有每个科目的分数 我想将其存储在HashMap lt gt 但我不明白为什么标记会合并 在期刊课上 public class Journal private static HashMap
  • 两个十六进制数的相似度

    我试图使用汉明和编辑距离找到类似的哈希值 十六进制哈希值 假设两个哈希值相似 如果它们的汉明距离小于 10 不同位数 Hash 1 ffffff base 16 Hash 2 fffff0 base 16 两个哈希之间的汉明距离是4 它们是
  • Android 成功分享意图

    如何判断用户是否成功完成了共享意图 例如 如果用户想通过 Facebook 或 Twitter 分享应用程序 Edit 我不是在研究如何创建Intent共享的 我想知道用户是否确实分享了任何内容 或者用户是否按下了取消按钮 我认为没有一种可
  • 在 Recyclerview 或 Listview 中添加多个标题。随机地

    如何在 RecyclerView 或 listview 中添加多个标题或分隔符 随机如下图突出显示 RecyclerView 中基于日期的多个标题 演示图像 您可以使用库来实现它分段回收器视图适配器 https github com lui
  • Project Euler - #1 Python 错误解决方案

    总体而言 我对编码还比较陌生 因此启动了欧拉项目 以使我的编码更进一步 花了一些时间思考如何自己解决第一个问题并尝试使用递归函数 不幸的是总是遇到同样的错误 266333 我错过了什么 有什么重大错误值得学习吗 原问题是 如果我们列出所有
  • 如果我使用 iPad 尺寸创建应用程序,如何找到 iPhone 尺寸的“安全区域”?

    我正在创建一个游戏 想要使用 iPad 尺寸设置 横向 1024x768 据我所知 使用 iPad 设置只会在 iPhone 上裁剪掉部分高度 假设我有一张 iPad 的 2048x1536 背景图像 1024x768 和 iPhone 6