11

我正在使用新的资产目录 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)。

任何帮助将非常感激。

4

7 回答 7

7

我终于找到了一个可行的解决方案。我不再使用资产目录。我把这些行放在我的 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>

它现在就像一个魅力:)

于 2013-10-08T06:49:40.073 回答
4

我找到了在带有资产目录的 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

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

问题的根源是资产目录生成了带有~ipad后缀的图标,iOS 5不理解,所以我们必须手动添加这些没有~ipad后缀的文件。iOS 6 没有这个问题,并且可以找到带有和不带有 ~ipad 后缀的正确图标。

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

于 2014-01-24T10:17:53.717 回答
2

XCode 6.0.1 更新

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

XCode 6.0.1 生成的 Info.plist

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

于 2014-10-16T15:14:25.363 回答
1

尝试这个:

将此添加到您的 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 上获得正确的图标(这真是太可惜了!)

于 2013-10-08T00:11:03.460 回答
0

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

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

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

于 2014-01-17T07:03:16.187 回答
0

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

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

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

于 2014-03-19T14:26:58.587 回答