Sil*_*sya 5 bundle assets storyboard uiimageview ios
我的问题是:我有几个带有共享 xcassets 的项目/目标。我想做的是在故事板中设置图像而无需代码。
正如我发现的那样,无法在不同捆绑包的故事板中设置图像。
我创建了 UIImageView 扩展,但没有考虑最好的解决方案。
是否存在一种方法可以使用来自不同捆绑包的故事板中的资源?
谢谢。
因此,根据这个问题的答案,我确实知道一个解决方案。听起来您已经完成了其中的一些操作,但只是为了给出完整的答案:
上面的内容应该足以让您在使用代码调用框架的资产目录中的图像时使用它们......
let frameworkBundle = Bundle(for: FrameWorkClass.self)
guard let image = UIImage(named: "MyImage", in: frameworkBundle, compatibileWith: nil) else { ... }
Run Code Online (Sandbox Code Playgroud)
...但是,要在故事板或 XIB中使用它,还需要一个步骤。虽然现在可以从 Interface Builder 中选择图像名称(甚至在选择时显示在此处),但故事板只能引用自己的包,因此当应用程序运行时,它会给出以下错误,并且图像将丢失:
无法加载从标识符为“BundleName”的包中的笔尖引用的“ImageName”图像
要解决此问题,您需要转到工作区的导航器(左侧面板)并将资产目录(即文件.xcassets)从框架拖动到应用程序项目本身内的某个位置(例如项目的根文件夹)。在出现的对话框中,确保您的应用程序在“添加到目标”列表中已选中,并且未选中以下选项。
这将在应用程序的主包中创建对框架中资产目录的引用,但不会创建其副本。
完成此操作后,您可以使用该目录中的图像,就像故事板和 XIB 中的任何其他图像一样。
老实说,我不能保证这是否是最佳实践,但这是我发现的实现我也认为是最小化项目之间重复的明智方法的唯一方法。如果您感兴趣,我在这里发布了一个问题,尝试确定这是否会导致构建时资产重复。
| 归档时间: |
|
| 查看次数: |
3239 次 |
| 最近记录: |