【问题标题】:Putting .xib files in a resource bundle with images将 .xib 文件放入包含图像的资源包中
【发布时间】:2015-09-02 04:57:30
【问题描述】:

我正在构建一个包含 .xib 和 .storyboard 文件的 ResourceBundle。这些是由我构建的静态库访问的文件。它们捆绑在一起的原因是静态库被多个应用程序使用。

这些故事板和 .xib 引用了许多图像,这些图像是资产目录的一部分。难题是资产目录应该在哪里。

如果我将资产目录与 .xib 文件一起放入包中,iOS7 将无法加载任何图像。那是因为[UIImage imageNamed:] 只查看 iOS7 中的主包。

相反,如果我将目录放在应用程序中,则图像在 iOS7 中正确加载,但在 iOS8 中加载失败!我可以将资产目录放在捆绑包和主应用程序中,然后它适用于 iOS7 和 8。但是,这会使我随应用程序提供的图像数据的大小翻倍。

另一个对我有用的选项是将捆绑包的最低部署版本设置为 IOS6。这可以防止资产目录被编译为 Assets.car,并且可以从 iOS 7 和 8 加载图像。这种方法适用于我的 ResourceBundles,但对于另一种方法,它没有为我的 iPhone 和 iPad 图像创建不同的文件.

关于如何解决这个问题的想法?

【问题讨论】:

    标签: ios cocoa-touch uistoryboard xib nsbundle


    【解决方案1】:

    我遇到了同样的问题,使用框架和捆绑包,唯一对我有帮助的解决方案是我将图像直接添加到捆绑包文件夹,并且诅咒将它们添加到 复制捆绑包资源 不在资产目录,它工作正常:

    首先获取你的捆绑包:

    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"YourBundle" ofType:@"bundle"]];
    

    然后获取您的图像:

    NSString *imagePath = [bundle pathForResource:@"imageName" ofType:@"imageType"];
    UIImage* yourImage = [UIImage imageWithContentsOfFile:imagePath];
    

    希望它会有所帮助。

    【讨论】:

    • 那你不使用资产目录吗?我能够使用资产目录并将我的项目的最小操作系统版本设置为 ios 6 来做到这一点。
    • 我没有使用目录,我会尝试更改版本,看看它在我的情况下如何工作。
    猜你喜欢
    • 2013-09-04
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多