我在 iTunes 上看到过这个应用程序,它正在 iphone 中创建自定义图标。在我的应用程序中,我还想更改 icon ,特别是我想要做的是在我的图标中有一个标签,并且我想以编程方式更改标签的值。
4 回答
从应用程序的视频教程来看,他们所做的似乎只是创建了一个网页,其中包含您创建的自定义图标的图标,然后用户将点击“添加到主屏幕”以将自定义网页添加到主屏幕。这应该足以让你继续前进。
可以从 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>
参考:
这是不可能的。除非您的应用属于报亭类别。对于报亭应用程序,使用代码更改图标,
UIApplication *app = [UIApplication sharedApplication];
[app setNewsstandIconImage:newsstandImage];
注意: @Enrico 建议的是不同的解决方案。您的应用程序图标仍会出现在主屏幕中,将创建一个重复的图标。大多数用户不会喜欢的。
只有我的两分钱。
直接添加到 plist 很好,如果在 Xcode 中直观地看到,最终效果是在 plist 中有一个“奇怪的”值(IOS5 ...):
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中输入的符号名称,例如:
<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 或类似内容。