【问题标题】:Support of iOS 5.0 icons with XCode 5使用 XCode 5 支持 iOS 5.0 图标
【发布时间】:2013-10-13 17:53:46
【问题描述】:

我正在使用新的资产目录 AppIcon 为 iOS 5(理论上)、6 和 7 设置正确的图标。 不幸的是,在我的 iPad 1(iOS 5.1.1)上安装应用程序时,显示的图标不是正确的(它是从另一个放大的,当然是 57x57 的)。

我看到创建资产目录后,Info.plist文件中添加了2个空条目:

  • Icon files (iOS 5)
  • CFBundleIcons~ipad

我已经阅读了很多“解决方案”,但对我没有任何帮助:(

其中一个解决方案是在 plist 中添加这些条目(并在项目中添加相应的图标):

<key>CFBundleIcons</key>
<dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>Icon.png</string>
            <string>Icon@2x.png</string>
            <string>Icon-72.png</string>
            <string>Icon-72@2x.png</string>
        </array>
        <key>UIPrerenderedIcon</key>
        <true/>
    </dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>Icon-Small</string>
            <string>Icon-Small-50</string>
            <string>Icon-72@2x.png</string>
            <string>Icon-72.png</string>
        </array>
        <key>UIPrerenderedIcon</key>
        <true/>
    </dict>
</dict>

但它根本不起作用。

我正在使用 XCode 5.0 (5A1413)。

任何帮助将不胜感激。

【问题讨论】:

    标签: ios xcode ios5 icons


    【解决方案1】:

    我终于找到了一个可行的解决方案。 我不再使用资产目录。 我将这些行放在我的 info.plist 文件中:

    <key>CFBundleIconFile</key>
    <string>Icon-57.png</string>
    <key>CFBundleIconFiles</key>
    <array>
        <string>Icon-72.png</string>
        <string>Icon-72@2x.png</string>
        <string>Icon-57.png</string>
        <string>Icon-57@2x.png</string>
        <string>Icon-60@2x.png</string>
        <string>Icon-60.png</string>
        <string>Icon-76@2x.png</string>
        <string>Icon-76.png</string>
        <string>Icon-29@2x.png</string>
        <string>Icon-29.png</string>
        <string>Icon-50@2x.png</string>
        <string>Icon-50.png</string>
        <string>Icon-40@2x.png</string>
        <string>Icon-40.png</string>
    </array>
    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>Icon-72@2x.png</string>
                <string>Icon-57.png</string>
                <string>Icon-72.png</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <true/>
        </dict>
    </dict>
    

    它现在就像一个魅力:)

    【讨论】:

    • 您可能还想将全套图标添加到CFBundleIcons 部分;这是我让图标出现在 iPad 1 / iOS 5 上所必需的。
    • 这个解决方案修复了 iPad 1 模糊图标的问题,但是我标记了我所有的图标,并且 iOS 7 的尺寸从未在 iOS 7 中使用。我需要我的 iOS 7 图标来适应新的边缘曲线.
    • 避免使用资产不是解决方案。问题是关于资产的现有问题以及如何解决它。
    • XCode 6 现在可以正确解释 iOS5 的图标资产目录。请参阅下面的答案。
    【解决方案2】:

    我找到了在带有资产目录的 iOS 5 上工作的更好解决方案。

    在 Info.plist 中设置此项(其他图标部分,如 CFBundleIcons 由 Xcode 生成并覆盖,因此将它们留空):

    <key>CFBundleIconFiles</key>
    <array>
        <string>AppIcon57x57.png</string>
        <string>AppIcon72x72.png</string>
        <string>AppIcon57x57@2x.png</string>
        <string>AppIcon72x72@2x.png</string>
    </array>
    

    并在您的资源(外部资产)中再添加两个图标:

    AppIcon72x72.png
    AppIcon72x72@2x.png
    

    这样,您的包中将只有两个图标重复。

    问题的根源在于asset catalog会生成这样的带有~ipad后缀的图标,iOS 5不理解,所以我们必须手动添加这些没有~ipad后缀的文件。 iOS 6 没有这个问题,并且可以找到带有和不带有 ~ipad 后缀的正确图标。

    使用您在资产目录中设置的图标名称(AppIcon 或 Icon 或其他任何名称)。

    【讨论】:

    • 我发现如果我从 Info.plist 中删除 CFBundleIconFiles 部分,它仍然可以工作,只要名称与您的示例中的名称完全相同...
    • 您也在为 52x52 图标添加条目,但随后您指示在资源中仅包含 72x72 版本。这是某种错误吗?
    • 我的结论是 info.plist 中不需要 57x57 条目,因为它们不会像 72 那样与 ^ipad 后缀捆绑在一起。此外,就像@BenedicteRaae 指出的那样,如果(这是我对此的补充,如果)这 72 个条目与资产目录具有相同的名称(在这种情况下,资产目录名称是 AppIcon - 但它可以是任何东西),则不需要这 72 个条目)
    【解决方案3】:

    XCode 6.0.1 更新

    XCode 6 图标资产目录现在似乎适用于 iOS5 - iOS8.0.2。我已经在运行 iOS 5.1.1 的 iPad 1 上确认了这一点。检查已编译的应用程序,我发现 XCode 正确生成了以下 Info.plist 图标条目并将图标文件复制到具有相应文件名的应用程序包根目录(这是在使用名为 AppIcon 的资产目录时生成的 - 默认值):

    这包含适用于所有 iPad 和 iPhone 设备(通过 iPhone 6+)的图标。

    【讨论】:

      【解决方案4】:

      试试这个:

      将此添加到您的 plist:

      <key>CFBundleIcons</key>
          <dict>
              <key>CFBundlePrimaryIcon</key>
              <dict>
                  <key>CFBundleIconFiles</key>
                  <array>
                      <string>Icon</string>
                      <string>Icon-72</string>
                      <string>Icon-Small</string>
                      <string>Icon-Small-50</string>
                  </array>
              </dict>
          </dict>
      

      然后将以下图标文件添加到项目的根级别(与您的 xcodeproj 文件相同的文件夹):

      Icon-72.png          (72x72)
      Icon-72@2x.png       (144x144)
      Icon-Small-50.png    (50x50)
      Icon-Small-50@2x.png (100x100)
      Icon-Small.png       (29x29)
      Icon-Small@2x.png    (58x58)
      

      您可能需要也可能不需要执行所有这些步骤,但它对我有用。我的项目使用 XCode 5 的资产目录,但我仍然必须这样做才能在运行 iOS 5.1.1 的 iPad1 上获得正确的图标(这真是太可惜了!)

      【讨论】:

      • 感谢您的回答。我没有尝试,因为我刚刚找到了一个可行的解决方案。看我的回答。
      • 检查我的回答,描述问题的根源以及如何正确解决它。
      【解决方案5】:

      您也可以在界面中禁用资产目录:

      1. 在边栏中选择您的项目(列表中最顶部的元素)
      2. 转到应用程序图标,单击源下拉字段并选择“不使用资产目录”
      3. 将您的图片添加到项目中(将它们放到边栏中,您可以为它们创建一个组)
      4. 现在您可以通过单击右侧的灰色小文件夹图标来选择应用图标下的图像。

      我的猜测是 iOS 5 只是不支持资产目录,所以你必须让 Xcode 5 使用旧的方式。

      【讨论】:

      • 更好的解决方案是使用资产,只需为 iOS 5 添加修复程序(请参阅上面的答案)。
      【解决方案6】:

      就我而言,唯一的解决方案是在资产中创建一个新的 App Icon 条目,并确保在其中设置了 iPad 图标。

      我在 Xcode 5 中处理一个旧项目。我让 Xcode 对旧项目文件进行一些转换,包括转换为使用资产。该项目仅适用于 iPhone,因此资产中转换后的 App 图标集不包含 iPad 条目 - 甚至不包含插槽。当我创建一个新的应用程序图标时,它还包括 iPad 的插槽(该项目仍然是“仅限 iPhone”)。填写所有条目后,我的图标显示在 iPad 1 (iOS 5.1.1) 上。

      请注意,我不必更改 Info.plist。此外,我不必为图标文件指定特定名称。

      【讨论】:

        【解决方案7】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-17
        • 2023-03-24
        相关资源
        最近更新 更多