【问题标题】:Removing Shine/Gloss effect on the iPhone through UIPrerenderedIcon not working on device通过 UIPrerenderedIcon 移除 iPhone 上的 Shine/Gloss 效果在设备上不起作用
【发布时间】:2025-12-22 11:15:11
【问题描述】:

我尝试在我的应用程序的 Info.plist 上使用 UIPrerenderedIcon/“图标已经包含光泽和斜角”,它在模拟器上运行良好,但在真实设备 (iPod touch 2g) 上却没有。 我什至尝试从设备上卸载应用程序,清理所有构建,但我仍然得到光泽/光泽,这真的毁了我的图标...... 有什么想法吗?

最好的问候, 玛菲

【问题讨论】:

  • 你设置为真了吗?
  • 在 info.plist 文件中,右键单击 UIPrerenderedIcon 键,使类型为“布尔”,然后选中复选框。
  • 我做到了。实际上我的版本显示“图标已经包含光泽......”并显示一个复选框。复选框被标记为设置。奇怪的是:它正在模拟器上运行......

标签: iphone objective-c xcode


【解决方案1】:

正如 Alex Stone 所说,在 iOS 5 中,您必须在 2 处对其进行编辑。

【讨论】:

    【解决方案2】:

    检查您的 Plist,我找到了一个 图标文件 (iOS 5) 字典。在字典中,还有另一个声明“图标已经包含光泽效果”,并且该声明设置为 NO。将该选项设置为 YES 后,您的 iOS5 应用将失去光泽效果!

    【讨论】:

      【解决方案3】:

      请注意,以防有人在使用 Xcode 5.0 和应用程序图标的资产目录时遇到同样的问题。资产目录属性检查器中有一个复选框应该被选中:

      【讨论】:

      • 这是最新的答案
      【解决方案4】:

      查看信息列表,新的 XCode/iOS5 有所不同。

          <dict>
          <key>CFBundlePrimaryIcon</key>
          <dict>
              <key>CFBundleIconFiles</key>
              <array>
                  <string>Icon.png</string>
                  <string>Icon@2x.png</string>
              </array>
              <key>UIPrerenderedIcon</key>
              <true/> <--------------------------------here it is
          </dict>
      </dict>
      

      【讨论】:

      • 当我在 pList 中查看时,它不允许我在上面列出的位置添加它。所以我不得不手动编辑源代码并自己插入那里,然后它就起作用了。所以总而言之,它需要在代码中看起来像上面,不能在“图标文件”部分之外。
      【解决方案5】:

      马弗尔,

      我遇到了这个问题,在我从设备上删除应用程序后它得到了解决。不知道为什么你的不会。

      在 XCode 中右键单击 info.plist 文件并打开-作为纯文本文件。确保您的文本文件在预渲染图标的区域中显示如下:

      <key>UIPrerenderedIcon</key>
      <true/>
      

      我也有一个奇怪的事件(在另一个应用程序中),我认为我正在使用的 info.plist 文件设置正确。然后我直接在 mac Finder 窗口中打开了该文件,结果发现 XCode 使用了错误的 info.plist 文件。在你的情况下,这是一个很长的机会,但尝试一下快速的健全性检查不会有什么坏处。

      希望对你有帮助,

      罗伯

      【讨论】:

        【解决方案6】:
        Yes this need two set at two places as described in above figure.
        
        
        If you want to set value dynamically using command from shell script or terminal, you can do that as below:
        
        /usr/libexec/PlistBuddy -c "Set :UIPrerenderedIcon YES" YOUR_PLIST_FILE_PATH
        
        /usr/libexec/PlistBuddy -c "Set :CFBundleIcons:CFBundlePrimaryIcon:UIPrerenderedIcon YES" YOUR_PLIST_FILE_PATH 
        
        **NOTE:** [Fore being helpful to the developer who want to set this using command]
        

        【讨论】:

          【解决方案7】:

          我通过将“图标已包含...”在 plist 中向上移动一行来解决它。我的猜测是解析器在 plist 末尾不能很好地处理空标签。

          【讨论】:

            【解决方案8】:

            我检查了 plist 读取是否正确,然后将它向上移动了一行,它仍然无法正常工作。

            我的解决方案:删除应用程序,然后关闭再打开 iPad。

            【讨论】:

              【解决方案9】:

              我设置“图标已经包含光泽效果 = YES” 在info.plist中,搜索这部分:

              <key>CFBundleIcons</key>
              <dict>
                  <key>CFBundlePrimaryIcon</key>
                  <dict>
                      <key>CFBundleIconFiles</key>
                      <array>
                          <string>myIcon.png</string>
                      </array>
                  </dict>
              </dict>
              

              现在,添加这 2 行:

                     <key>UIPrerenderedIcon</key>
                     <false/>
              

              最后,一定是:

              <key>CFBundleIcons</key>
              <dict>
                  <key>CFBundlePrimaryIcon</key>
                  <dict>
                      <key>CFBundleIconFiles</key>
                      <array>
                          <string>myIcon.png</string>
                      </array>
                      <key>UIPrerenderedIcon</key>
                      <true/>
                  </dict>
              </dict>
              

              【讨论】: