【问题标题】:Why does Xcode ignore my .xcassets larger sizes for my app icon in an OS X app project?为什么 Xcode 在 OS X 应用程序项目中忽略我的 .xcassets 较大尺寸的应用程序图标?
【发布时间】:2015-03-23 14:10:09
【问题描述】:

我正在为我的 OS X 应用程序设置自定义图标而烦恼。我已经创建了所有需要的图像文件:

mondrian_128x128.png
mondrian_128x128@2x.png
mondrian_16x16.png
mondrian_16x16@2x.png
mondrian_256x256.png
mondrian_256x256@2x.png
mondrian_32x32.png
mondrian_32x32@2x.png
mondrian_512x512.png
mondrian_512x512@2x.png

我已将每张图片拖到我的 AppIcon xcassets 区域中的相应井中,现在所有十张图片都出现在那里。 (大于 32x32@2x 的都以与 Xcode 中的 32x32@2x 相同的尺寸显示,但也许应该是这样;我猜 Xcode 这样做是为了节省屏幕空间,因为显示的是 1024x1024 图像会占据整个窗口。)

当我在 Xcode 中检查这些图像时,通过单击每个孔,它会在检查器区域中显示看起来不错的信息——正确的名称、大小、比例等。同样,.xcassets 中的 .json 文件看起来不错:

{
  "images" : [
    {
      "size" : "16x16",
      "idiom" : "mac",
      "filename" : "mondrian_16x16.png",
      "scale" : "1x"
    },
    {
      "size" : "16x16",
      "idiom" : "mac",
      "filename" : "mondrian_16x16@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "32x32",
      "idiom" : "mac",
      "filename" : "mondrian_32x32.png",
      "scale" : "1x"
    },
    {
      "size" : "32x32",
      "idiom" : "mac",
      "filename" : "mondrian_32x32@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "128x128",
      "idiom" : "mac",
      "filename" : "mondrian_128x128.png",
      "scale" : "1x"
    },
    {
      "size" : "128x128",
      "idiom" : "mac",
      "filename" : "mondrian_128x128@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "256x256",
      "idiom" : "mac",
      "filename" : "mondrian_256x256.png",
      "scale" : "1x"
    },
    {
      "size" : "256x256",
      "idiom" : "mac",
      "filename" : "mondrian_256x256@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "512x512",
      "idiom" : "mac",
      "filename" : "mondrian_512x512.png",
      "scale" : "1x"
    },
    {
      "size" : "512x512",
      "idiom" : "mac",
      "filename" : "mondrian_512x512@2x.png",
      "scale" : "2x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

然而,当我构建我的应用程序时,事情似乎一团糟。不会出现构建警告或错误,但构建的产品除了最小尺寸之外没有任何其他内容。具体来说:Xcode生成的AppIcon.icns,貌似只有16x16和16x16@2x的图片。我可以通过在 Finder 中快速查看它(如 Apple 推荐的那样)或在预览中打开它来查看这一点。此外,当我在 Finder 中选择它时,应用程序本身会显示一个模糊的图标,该图标明显是从小图标放大的。当我在面板的 NSImageView 中使用 NSApplicationIcon 时,显示的图标很小。较大的尺寸显然没有被复制。

我整个上午都在网上阅读有关 .xcasset 的信息,观看有关如何组装它们的 YouTube 视频,以及(当然)查看 Apple 相当无用的文档。我一生都无法弄清楚我做错了什么。有什么想法吗?

更新:

我现在正在尝试使用 iconutil 来制作 ICNS,以期了解 Xcode 无法正确执行此操作的原因。我将我的 AppIcon.appiconset 复制到我的桌面并尝试了“iconutil -c icns AppIcon.appiconset”。它说“AppIcon.appiconset:错误:无效的图标集。”。如果这是一个问题,我将名称更改为“AppIcon.iconset”,并将其错误更改为“AppIcon.iconset:error: Failed to generate ICNS”。我突然想到,也许图像需要与 .iconset 的名称具有相同的名称,所以我将它们全部从“mondrian”开头更改为“AppIcon”开头。仍然收到“AppIcon.iconset:error: Failed to generate ICNS”。如果 iconutil 打印出更多有用的错误消息当然会很好。

我还刚刚在 GraphicConverter 中打开了所有图像文件,添加了一个 Alpha 通道,然后将它们保存回来,我认为可能需要一个 Alpha 通道(尽管我在任何地方都没有看到任何提及 - 但大多数应用程序确实有alpha 在他们的图标中,所以...)。同样,没有变化:“AppIcon.iconset:error: Failed to generate ICNS.”。啊。

更新 2: 现在可以了。我不确定为什么。我将桌面上的实验性 .iconset 中的修改图像(添加了 alpha 通道,保存在 GraphicConverter 中而不是从 Photoshop Elements 中)添加回我的 Xcode 项目的 .xcassets 中的 AppIcon,清理并构建,现在都好。 iconutil 仍然拒绝将其编译为 ICNS,但 Xcode 现在可以做到。我不知道为什么。也许关于我的项目状态的某些内容已损坏,或者可能需要 alpha,或者 GraphicConverter 以 Xcode 比 Photoshop Elements 格式更喜欢的方式保存 PNG 文件。谜团比比皆是。无论如何,也许这个记录会对处于类似情况的其他人有所帮助。

【问题讨论】:

  • 我之前遇到过类似的 xib 文件问题。您是否尝试过 Product->Clean 和 Product->Clean Build Folder。当我看到 assets/xibs 有问题或看起来很奇怪时,我首先会清理项目并构建文件夹,然后如果仍然有问题,我会在其他地方寻找错误。
  • 我曾尝试进行清洁,但没有帮助。我什至退出 Xcode 并重新启动它,但这并没有帮助。我没有做 Clean Build Folder,也许我应该尝试一下。无论如何,问题现在已经解决了,原因我不太明白;见我上面的更新。谢谢。男孩,没有什么比 15 分钟的任务变成 4 小时的任务更重要的了。哇!

标签: xcode macos icons xcasset


【解决方案1】:

我遇到了同样的问题。 “Clean Build”、“Clean Build Folder”(⎇⇧⌘K)和其他建议并没有改善问题,但它们确实为我指明了正确的方向。

我已按照guide 创建图标集,但它可能已过时和/或我犯了一个错误并搞砸了。

在开始以下似乎已解决问题的步骤之前,我能够查看我的应用程序包中的所有正确图标。 查看包 > 内容/资源/*.icns

为了重置我所做的一切:

从项目中删除所有相关的图标:

  1. 使用项目导航器从项目中删除assetcatalog 和iconset 文件夹。我相信 icns 文件夹是由命令行图标实用程序创建的,不需要。
  2. 从项目文件夹中手动删除相关文件夹。
  3. 重新启动 Xcode 以获得良好的效果。

再次添加图标:

由于我在文件系统的 iconset 文件夹中仍然拥有所有正确的图标,因此我执行了以下操作以将图标添加到项目中:

  1. 在项目导航器中右键单击项目文件夹并选择“新建文件...”

  2. 选择 OS X > 资源 > 资产目录在项目文件夹中创建一个新的资产目录文件夹。试图将其指向现有的图标集文件夹似乎会使事情复杂化。

  3. 在 Project Navigator 中单击新创建的 assets 文件夹,然后右键单击 Xcode 界面中心的新图标占位符。从弹出菜单中选择“新建 Mac OS 图标”。您现在应该可以看到不同图标大小的所有空井。

  4. 再次右键单击并从您现有的图标集文件夹中“导入...”(此步骤显示我有一些额外的 .pngs Xcode 不知道如何处理)。从一个容器拖放到另一个容器,直到所有容器都装满,然后移除空图标支架。右键单击还会在菜单底部显示一个有用的“获取资产目录”链接,通过普通帮助选项不容易找到该链接(它也不在屏幕顶部的主编辑器菜单下)。

  5. 清理构建、清理文件夹和构建。

【讨论】:

    【解决方案2】:

    我发现,如果我使用 Preview.app 重新保存图像,确保每个图像的画布大小和 ppi 正确,我就能在生成的 icns 文件中显示所有 10 个表示。

    我的猜测是 Photoshop 或 Photoshop 元素将额外的垃圾注入到 iconutil/xcode 不喜欢的文件中。事实上,保存后,每个文件都小很多(16x16 1x 从 374kb 变为 1kb)。

    【讨论】:

      【解决方案3】:

      除了上述解决方案之外,使用“sRgb”颜色配置文件保存图像为我解决了这个问题。它可以通过预览或 Photoshop 或其他首选编辑器来完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多