gpt4 book ai didi

ios - Storyboard,UIImageView。从包中加载图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:15 26 4
gpt4 key购买 nike

我的问题是:我有几个共享 xcassets 的项目/目标。我想要做的是在没有代码的情况下在 Storyboard中设置图像。

正如我所发现的,无法在 Storyboard中设置来自不同包的图像。

我创建了 UIImageView 扩展,但没有想到最好的解决方案。

有没有一种方法可以在 Storyboard中使用来自不同包的 Assets ?

谢谢。

最佳答案

因此,基于对 this question 的回答,我确实知道一种解决方案。听起来您已经完成了其中的一些工作,但只是为了给出完整的答案:

  1. 创建一个框架项目来存放您共享的图像(它也非常适合共享代码!):File > New > Project > iOS > Cocoa Touch Framework
  2. File > New > File > iOS > Resource > Asset Catalogue 框架内创建一个新的 Assets 目录。
  3. 将您的图像导入 Assets 目录。
  4. 创建一个新工作区:文件 > 新建 > 工作区
  5. 将您的应用和框架添加到工作区:文件 > 将文件添加到工作区名称
  6. 将框架作为“嵌入式二进制文件”包含在应用项目中:点击项目导航器中的蓝色项目文件图标,转到常规项目设置并找到嵌入式二进制文件 .点击 + 并从列表中选择框架(例如 ExampleFramework.framework)。

以上内容应该足以让您在使用代码调用时使用框架 Assets 目录中的图像...

let frameworkBundle = Bundle(for: FrameWorkClass.self)
guard let image = UIImage(named: "MyImage", in: frameworkBundle, compatibileWith: nil) else { ... }

...但是,要在 Storyboard或 XIB 中使用它,还需要一个步骤。虽然图像名称现在可以从 Interface Builder 中选择(甚至在选择时显示在那里), Storyboard只能引用它们自己的包,因此当应用程序运行时它会给你以下错误,并且图像将丢失:

Could not load the "ImageName" image referenced from a nib in the bundle with identifier "BundleName"

要解决此问题,您需要转到工作区的导航器(左面板)并将 Assets 目录(即 .xcassets 文件)从框架拖到应用程序项目本身的某个位置(例如项目的根文件夹)。在出现的对话框中,确保您的应用已在添加到目标列表中选中,并保留以下选项未选中

enter image description here

这将在您的应用程序的主包中创建一个对框架中 Assets 目录的引用,但不会创建它的副本。

一旦完成,您就可以像使用 Storyboard和 XIB 中的任何其他图像一样使用该目录中的图像。

老实说,我不能保证这是否是最佳做法,但这是我发现的实现我认为也是最大程度减少项目重复的明智方法的唯一方法。如果您有兴趣,我已经发布了一个问题 here尝试确定这是否会导致构建 Assets 的任何重复。

关于ios - Storyboard,UIImageView。从包中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com