为iPhone定位带有文本的图像的最佳方法是什么



我计划对我的iPhone应用程序进行本地化,除英语外,还包括9种其他语言。

我担心的是,我有许多带有文本的.png文件,它们各自的@2x图像用于视网膜显示。

现在我的应用程序有5.6Mb,在包含了其他9种语言的.png@2x文件后,我担心它会比这个重得多。

根据你的经验,这是真的吗?在将应用程序本地化为其他9种语言后,我会得到一个更大的应用程序吗?

答案取决于您如何实现应用程序。

如果你的图像包含文本,那么你必须为每种语言创建这些图像的新版本(正常分辨率和@2x分辨率)。这不仅需要额外的空间,还使本地化变得非常困难,因为你将花费数小时将翻译成图像并管理大量文件。

可本地化的应用程序通常不会在其图像中包含文本,而是以编程方式在背景图像上呈现文本(来自可本地化资源)。您可以使用XiB并将UILabels覆盖在图像或其他UI元素上。如果你这样做,那么你就不必担心添加语言对大小的影响,本地化将是轻而易举的事。

我认为您的大多数图像都将用于按钮?与其用Images创建按钮,不如考虑为按钮使用可拉伸的背景图像,然后在其中添加文本。UIKit提供了许多方法,可以方便地用于计算和定位按钮内的文本。

如果你这样做,而不是为你的每个按钮提供图像,那么维护起来会更容易。此外,它还为您提供了在未来扩展应用程序的空间,而不会超过50MB的大小限制。假设你设法在应用程序中容纳了所有内容,并且不到50MB,如果将来你要添加更多功能,或者很多用户要求使用某种语言,该怎么办?

如果我的假设是错误的,我很抱歉。请告诉我,这样我就可以修改我的答案了。

我怀疑这会是个问题。假设当前应用程序的5MB专用于PNG文件,那么添加9x应该会使其大小达到50MB。这不是一个大型应用程序。

您可以考虑的其他因素是,并非所有图像都需要本地化,因此即使是50MB的估计也可能很高。

如果你正在编写你的应用程序,并且相信它会变得更大,那么你可能需要考虑一种不同的策略来显示你的文本。只本地化徽标文件,也许还有一些其他"花哨"的图像文件。所有其他文本实现都应该通过文本布局和格式引擎来实现。

如果您绝对必须以文本作为图像格式,请考虑在应用程序执行时渲染图像。

另一种实现方法(我已经将其用于其他目的)是生成所有图形并将其存储为不带文本。接下来,为文本生成单独的图像文件,使这些图像的背景保持透明。

当您需要加载特定语言的图像时,请先加载图形图像,然后将其与文本图像叠加。

这将减少应用程序的整体大小,因为最大的PNG文件应该是那些颜色最多的文件,而您在应用程序中只需要一个实例。通过将文本抽象为另一个图像,可以显著缩小文本图像的大小。

关于使用这种方法的警告。如果在iOS处理器上以高频率对高度透明或不透明的图像、叠加图像和叠加图像进行分层,可能会非常密集。将一个图像放在另一个图像之上应该不是问题,但是,在显示器的各个部分将许多图像层叠在一起可能会使应用程序陷入困境。然而,如果你只是在寻找一个本地化文本的解决方案,我认为这个是相当可行的。

最新更新