以编程方式更改App图标

时间:2014-02-10 05:41:48

标签: iphone xcode icons appicon

我看过this application on iTunes,它正在iphone中创建自定义图标。在我的应用程序中,我还想更改图标,具体我想要做的是在我的图标中有一个标签,并且以编程方式我想要更改标签的值。

4 个答案:

答案 0 :(得分:1)

video tutorial of the app开始,他们正在做的就是他们创建了一个网页,其中包含您创建的自定义图标的图标,然后用户点击“添加到主屏幕”以添加自定义网页到主屏幕。这应该足以让你前进。

答案 1 :(得分:1)

可以从iOS 10.3更改appIcon。

斯威夫特3:

if UIApplication.shared.supportsAlternateIcons{
        UIApplication.shared.setAlternateIconName("icon2", completionHandler: { (error) in
            print(error ?? "")
        })
}

目标C:

[[UIApplication sharedApplication] setAlternateIconName:@"icon2" completionHandler:^(NSError * _Nullable error) {
        //NSLog(@"Error...");
}];

在info.plist中将supportsAlternateIcon设置为Yes。应在应用程序的Info.plist文件的CFBundleIcons键中添加主要和辅助图标。

//Info.plist
<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>Icon1</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>icon1</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
        <key>Icon2</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>icon2</string>
            </array>
        </dict>
    </dict>
</dict>

参考文献:

答案 2 :(得分:0)

这是不可能的。除非您的应用属于报亭类别。对于报亭应用,请使用代码

更改图标
UIApplication *app = [UIApplication sharedApplication];
[app setNewsstandIconImage:newsstandImage];

注意: @Enrico建议的是另一种解决方案。您的应用程序图标仍将显示在主屏幕中,将创建一个重复的图标。其中大多数用户不喜欢。

答案 3 :(得分:0)

只有我的两分钱。

直接添加到plist中就可以了,如果从Xcode中直观地看到,则最终效果是plist中具有“奇怪的”值(IOS5 ...):

enter image description here

2)在模拟器(Xcode 10 beta ...)调试控制台上运行时,您将看到:

MobileGestalt.c:890:此平台不支持MGIsDeviceOneOfType。

但是有效

3)不要在AppDelegate中直接调用。如果需要,将其称为已调度:

    final func changeIcon(){

        let name = "Icon1"
        let icon = UIImage(named:  name)
        if UIApplication.shared.supportsAlternateIcons{
            UIApplication.shared.setAlternateIconName(name, completionHandler: { (error) in

                print(error ?? "ok")
            })
        }
    }

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        let when = DispatchTime.now() + 1
        DispatchQueue.main.asyncAfter(deadline: when) {
            self.changeIcon()
        }

        return true
    }
.....

4)注意:图标名称是您在上一级按键中输入的符号名称,例如:

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>Icon1</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>logo2_120x120</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
        <key>Icon2</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>logo3_120x120</string>
            </array>
        </dict>
    </dict>
</dict>

并且不要在plist中添加@ 2x或类似内容。