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

将图像、字符串文件添加到iPhone中的静态库,iphone,objective-c,static,resources,Iphone,Objective C,Static,Resources,我想制作一个静态库,它基本上显示一些视图和按钮。我的客户希望它作为一个库分发,供其他iPhone开发人员使用 我的怀疑是 我们可以向库中添加图像和其他资源吗 如何将本地化包含到此静态库?(localizable.strings??) 一个库加上图像和资源正是框架的目的,而不是一个静态库。(免责声明:我是Mac程序员,不是iPhone程序员,所以据我所知,框架在iPhone上可能不太常见。)由于iOS上不允许使用框架,您有两种可能的选择: 在静态库旁边打包一个“资源”文件夹。其中包含您的图像等。

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

我的怀疑是

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

一个库加上图像和资源正是框架的目的,而不是一个静态库。(免责声明:我是Mac程序员,不是iPhone程序员,所以据我所知,框架在iPhone上可能不太常见。)

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

  • 在静态库旁边打包一个“资源”文件夹。其中包含您的图像等。向库用户提供有关资源应放在何处的文档(可能复制到应用程序的资源文件夹中)。本地化文件将导入到项目中

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


  • 但是,我不相信您可以嵌入(供以后使用)本地化字符串文件。

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


    要使静态库本地化,请将您创建的Localizable.strings文件添加到项目中,其中包括您的库和所有可用文件。

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

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

    这个简单的应用程序将帮助您转换图像

    这似乎是真正的答案。框架可能是标准,但由于iOS中不允许使用框架,因此这是一个更好的解决方案。选项一允许应用程序开发人员更改库的图标。选项二允许库开发人员保留他们自己的图标。这不是正确的答案。只要操作正确,定制框架是完全允许的。我已经构建了一些应用程序,我的应用程序已经被苹果公司多次接受。也许我应该澄清一下。当我说框架时,我指的是苹果使用它的意思,也就是说,一个“版本化的捆绑包”。应用程序可以在一个捆绑包中引用不同版本的代码。它意味着动态链接,大多数框架(OSX)在运行时是动态链接的,而不是静态链接的。此外,Xcode的iOS目标中也没有框架。但是,当然可以创建一个捆绑包,并在其中打包将在编译时编译和/或添加到应用程序捆绑包中的内容。然而,这似乎不值得额外的工作。我知道这已经很旧了,但苹果完全允许定制框架。我自己已经构建了一些,应用程序已经被接受。