【问题标题】:Specify which .xcassets catalogue to use an image from in XIB指定要使用 XIB 中的图像的 .xcassets 目录
【发布时间】:2020-05-21 10:55:15
【问题描述】:

如果我有:

  • 一个 Xcode 项目中有两个目标(AB
  • 两个不同的资产目录(a.xcassetsb.xcassets
    • a.xcassets 仅分配给目标 A
    • b.xcassets 仅分配给目标 B
  • 1.pnga.xcassets 中称为Image2.pngb.xcassets 中也称为Image

构建时:

  • 1.png 最终会出现在 Assets.carA.app
  • 2.png 最终会出现在 Assets.carB.app

这两个图像在代码或 IB 文件中都可以称为 Image,并在各自的构建应用程序中显示正确的图像。

到目前为止,一切都很好。现在我的问题:

当将 UIImageView 添加到仅属于目标 Bb.xib 并在该 UIImageView 中引用 Image 时,它实际上不会在 Xcode 的 XIB 显示中显示 2.png 而是 1.png。 Xcode 应该知道b.xib 属于目标B,并且它应该在b.xcassets 中寻找Image 而不是a.xcassets(因为a.xcassets 没有目标B 的成员资格)。

如何使用正确的Image (2.png) 设计布局?

有没有办法告诉 Xcode 命名空间或指定资产目录以获取 Image ?我试过b/Imageb.xcassets/Image

PS:一个工作区中的两个项目(每个项目都有一个目标)也是如此

【问题讨论】:

    标签: xcode assets target workspace


    【解决方案1】:

    基本上,不要那样做。不要为不同资产目录中的图像集赋予相同的名称。正如您所展示的,它使 Interface Builder 感到困惑。

    您也许可以使用资产目录“文件夹”功能来区分名称间距,但我也没有发现这完全可靠。

    【讨论】:

    • 感谢您的回答。如果我们不能在两个不同的目录中使用相同的名称,那么允许每个项目(甚至每个工作区)有多个目录是没有意义的。我会说这是 Apple 的重大疏忽。
    • 你可以这样做,但它会混淆 Interface Builder。您实际运行的应用程序没问题,对吧?
    • 是的,应用程序(a.app 和 b.app)中的资产都是正确的。在 Interface Builder 中设计各自的布局只是一个皮塔。我只是希望(d)有一种方法可以让 Xcode 从正确的目录中获取图像(就像构建工具链知道它一样,那么 Xcode 为什么不应该呢?)
    • 希望和一毛钱能让你打个电话。我的回答站得住脚。 IB 又老又硬,不像你那样理解资产目录。如果这对您很重要,请向 Apple 提交错误报告。
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2018-12-06
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多