我打算本地化我的iPhone应用程序,包括除英语以外的其他9种语言。
我担心的是,我有很多.png
个带文字的文件,以及各自@2x
个用于视网膜显示的图像。
现在我的应用程序有5.6Mb,而且我担心在为其他9种语言中包含.png
和@2x
文件之后,它会比那个重得多。
根据您的经验,这是真的吗?在将其本地化为其他9种语言之后,我最终会得到更大的应用程序吗?
答案 0 :(得分:6)
答案取决于您实施应用的方式。
如果您的图片包含文字,那么您必须为每种语言创建这些图像的新版本(正常和@ 2x分辨率)。这不仅占用了额外的空间,而且还使本地化非常艰巨,因为您将花费数小时Photoshop翻译成图像并管理大量文件。
可本地化的应用程序通常不在其图像中包含文本,而是以编程方式在背景图像上呈现文本(来自可本地化的资源)。您可以在图像或其他UI元素上使用XiB并覆盖UILabels
。如果你这样做,那么你就不必担心添加语言对尺寸的影响,本地化将是轻而易举的。
答案 1 :(得分:1)
我怀疑这是一个问题。假设当前应用程序的5MB专用于您的PNG文件,那么向其添加9x应该使其大小为50MB。这不是一个大型的应用程序。
您可以考虑的其他因素是并非所有图像都需要进行本地化,因此即使估计50MB也可能很高。
如果您正在编写应用程序并认为它会增加到更大的大小,那么您可能需要考虑一种不同的策略来显示您的文本。只能本地化徽标文件和其他一些“奇特”的图像文件。所有其他文本实现都应该通过文本布局和格式化引擎来实现。
如果绝对必须使用文本图像格式,请考虑在应用程序执行时渲染图像。
另一种实现方法(我用于其他目的)是生成所有图形并在没有文本的情况下存储它们。接下来,为您的文本生成单独的图像文件,使这些图像的背景透明。
当您需要加载特定语言图像时,首先加载图形图像,然后将其与文本图像叠加。
这将减少应用程序的整体大小,因为最大的PNG文件应该是那些颜色最多的文件,您只需要在应用程序中使用一个实例。通过将文本抽象为另一个图像,您可以显着缩小文本图像的大小。
关于使用此方法的警告。如果以高频率发生,则在iOS处理器上分层高度透明或不透明的图像,覆盖图像,覆盖图像可能会非常密集。将一个图像放在另一个图像上应该不是问题,但是,在显示器的各个部分中将多个图像叠加在一起可能会使应用程序陷入困境。但是,如果您只是在寻找本地化文本的解决方案,我认为这个解决方案是可行的。
答案 2 :(得分:1)
我假设您的大部分图片都会用于按钮?不要使用图像创建按钮,而是考虑为按钮使用可伸缩的背景图像,然后在其中添加文本。 UIKit提供了许多方法,可以方便地用来计算和定位按钮内的文本。
如果以这种方式执行此操作,则更容易维护,而不是为您拥有的每个按钮提供图像。此外,它还为您提供了扩展应用程序的空间,而不会超过50MB的大小限制。让我们说你以某种方式设法适应你的应用程序中的所有东西,只有不到50MB,如果将来你添加更多功能或许多用户请求某种语言会怎样?
如果我的假设错了,我很抱歉。请告诉我,以便我可以修改我的答案。