在iPhone中将图像,字符串文件添加到静态库中

时间:2010-08-03 05:08:12

标签: iphone objective-c static resources

我想制作一个基本上显示一些视图和按钮的静态库。我的客户希望将其作为一个库分发给其他iPhone开发人员使用。

我怀疑是

  • 我们可以将图像和其他资源添加到库.a文件中吗?
  • 我们如何将本地化包含在这个静态库中?(localizable.strings ??)

4 个答案:

答案 0 :(得分:4)

这是正确的,您不能在静态库中包含本地化文件。这只是开发静态库时必须处理的众多缺点之一。

要使您的静态库本地化,请将您创建的Localizable.strings文件添加到项目中,包括您的库,并且一切正常。

答案 1 :(得分:2)

由于iOS上不允许使用Frameworks,因此您有两种可能的选择:

  1. 将“Resources”文件夹与静态库一起打包。这包含您的图像等。向库的用户提供有关资源应该去哪里的文档(可能会复制到应用程序的Resources文件夹中)。本地化文件将导入到项目中。

  2. Base64(或其他)编码图像等,并将其作为静态数据编译到库代码中。这有点尴尬,但可以做到。加载它们以进行显示时,您必须对它们进行解码(NSData等)。您可以提供一个存储编码对象的资源类,并以未编码的形式返回它们。这里一个明显的缺点是你的代码可能变得非常大 - 确保你只在实际需要时加载资源并在完成后卸载..

  3. 我不相信你可以嵌入(供以后使用)本地化字符串文件。

答案 2 :(得分:1)

库以及图像和资源正是框架的用途,而不是静态库。 (免责声明:我是Mac程序员,而不是iPhone程序员,所以我知道也许在iPhone上不太常见的框架。)

答案 3 :(得分:0)

您可以将图像转换为二进制数据,并将其作为char []添加到库中。 然后当需要图像时,只需使用

[[UIImage alloc] initWithData:[NSData dataWithBytesNoCopy:(void*)<CHAR_ARRAY_NAME> length:sizeof(<CHAR_ARRAY_NAME>) freeWhenDone:NO]];

这个简单的应用程序将帮助您转换图像https://github.com/RomanN2/image-to-binary-data