有一种方法来改变应用程序图标时,用户点击一个按钮?Thanks in advance.我正在使用:界面生成器:情节提要语言:Swift macOS:12 Xcode版本:13.1
jtw3ybtb1#
步骤1:
设计您的替代应用程序图标并将其导出为两种大小:120 px(60px@2x)180 px(60px@3x)将图标添加到您的项目中的新目录App Icons下。请注意,备用图标文件必须位于Project目录中,而不是Assets目录中。x1c 0d1x步骤2:在Info.plist文件中注册新图标首先,添加一个新的CFBundleIcons条目(图标文件(iOS 5)),然后添加另一个条目CFBundleAlternateIcons。Info.plist中的CFBundleAlternateIcons条目对于每个替代图标,请在infos.plist文件中的CFBundleAlternateIcons下添加一个新条目。条目的名称是稍后将在Xcode项目中使用的图标名称,条目的字符串值是您在步骤1中添加到项目中的图标文件的名称。Info.plist中的应用程序图标条目在Info.plist中添加完所有图标后,您的备用图标即可在应用程序中使用。
第3步:应用程序图标管理器
切换应用程序图标的Apple API非常简单,包括3个变量/函数:
var supportsAlternateIcons: Bool { get } open func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Void)? = nil) open var alternateIconName: String? { get }
根据Apple文档,supportsAlternateIcons将在系统允许您更改应用程序图标时为true,否则为false。setAlternateIconName方法用于将应用程序图标更改为其主图标或其备用图标之一。如果alternateIconName为nil,则将使用默认的应用程序图标。最后,alternateIconName返回当前使用的备用图标的名称。如果使用默认图标,则为nil。为了轻松处理图标更改,我们将创建一个图标管理器来与Apple API交互。首先,创建一个枚举,其中包含每个备用应用程序图标。
enum BMAppIcon: CaseIterable { case classic, cookie, donut, cake, iceCream }
现在让我们在枚举中添加每个图标的文件名,以及一个将显示在应用程序UI中的预览图标。在我们的枚举中,classic是默认的应用程序图标。这就是为什么它的文件名为nil的原因。有关为什么文件名为nil的更多信息,您可以查看Apple文档中的alternateIconName描述。
var name: String? { switch self { case .classic: return nil case .cookie: return "cookieIcon" case .donut: return "donutIcon" case .cake: return "cakeIcon" case .iceCream: return "iceCreamIcon" } } var preview: UIImage { switch self { case .classic: return #imageLiteral(resourceName: "cake@2x.png") case .cookie: return #imageLiteral(resourceName: "cookie@2x.png") case.donut: return #imageLiteral(resourceName: "donut@2x.png") case .cake: return #imageLiteral(resourceName: "cake@2x.png") case .iceCream: return #imageLiteral(resourceName: "iceCream@2x.png") } }
现在我们已经有了枚举,让我们创建一个包含两个函数的AppIconManger类:一个用于检索当前应用程序图标,一个用于更新它。
var current: BMAppIcon { return BMAppIcon.allCases.first(where: { $0.name == UIApplication.shared.alternateIconName }) ?? .classic } func setIcon(_ appIcon: BMAppIcon, completion: ((Bool) -> Void)? = nil) { guard current != appIcon, UIApplication.shared.supportsAlternateIcons else { return } UIApplication.shared.setAlternateIconName(appIcon.name) { error in if let error = error { print("Error setting alternate icon \(appIcon.name ?? ""): \(error.localizedDescription)") } completion?(error != nil) } }
第4步:在应用程序中使用应用程序图标管理器
最后一步,要更新当前的应用程序图标,只需调用之前定义的setIcon函数,并将要设置的新图标作为参数传递。
dtcbnfnu2#
有一种更简单的方法可以更改应用程序图标1.将备用应用程序图标添加到资产目录(iOS应用程序图标)1.在构建设置中,将选项“包括所有应用程序图标资产”更改为“是现在您可以使用setAlternateIconName方法更改应用图标。例如:
UIApplication.shared.setAlternateIconName("AppIcon-2") { error in if let error = error { print(error.localizedDescription) } else { print("Success!") } }
2条答案
按热度按时间jtw3ybtb1#
步骤1:
设计您的替代应用程序图标并将其导出为两种大小:120 px(60px@2x)180 px(60px@3x)将图标添加到您的项目中的新目录App Icons下。请注意,备用图标文件必须位于Project目录中,而不是Assets目录中。
x1c 0d1x步骤2:在Info.plist文件中注册新图标
首先,添加一个新的CFBundleIcons条目(图标文件(iOS 5)),然后添加另一个条目CFBundleAlternateIcons。
Info.plist中的CFBundleAlternateIcons条目对于每个替代图标,请在infos.plist文件中的CFBundleAlternateIcons下添加一个新条目。条目的名称是稍后将在Xcode项目中使用的图标名称,条目的字符串值是您在步骤1中添加到项目中的图标文件的名称。
Info.plist中的应用程序图标条目在Info.plist中添加完所有图标后,您的备用图标即可在应用程序中使用。
第3步:应用程序图标管理器
切换应用程序图标的Apple API非常简单,包括3个
变量/函数:
根据Apple文档,supportsAlternateIcons将在系统允许您更改应用程序图标时为true,否则为false。setAlternateIconName方法用于将应用程序图标更改为其主图标或其备用图标之一。如果alternateIconName为nil,则将使用默认的应用程序图标。最后,alternateIconName返回当前使用的备用图标的名称。如果使用默认图标,则为nil。为了轻松处理图标更改,我们将创建一个图标管理器来与Apple API交互。首先,创建一个枚举,其中包含每个备用应用程序图标。
现在让我们在枚举中添加每个图标的文件名,以及一个将显示在应用程序UI中的预览图标。在我们的枚举中,classic是默认的应用程序图标。这就是为什么它的文件名为nil的原因。有关为什么文件名为nil的更多信息,您可以查看Apple文档中的alternateIconName描述。
现在我们已经有了枚举,让我们创建一个包含两个函数的AppIconManger类:一个用于检索当前应用程序图标,一个用于更新它。
第4步:在应用程序中使用应用程序图标管理器
最后一步,要更新当前的应用程序图标,只需调用之前定义的setIcon函数,并将要设置的新图标作为参数传递。
dtcbnfnu2#
有一种更简单的方法可以更改应用程序图标
1.将备用应用程序图标添加到资产目录(iOS应用程序图标)
1.在构建设置中,将选项“包括所有应用程序图标资产”更改为“是
现在您可以使用setAlternateIconName方法更改应用图标。例如: