返回

从零开始:Swift 中的应用图标更换

IOS

在之前的文章中,我们已经了解了如何让应用拥有主题自定义的功能。但是,当应用图标一直保持默认状态时,这些努力就显得不那么完美了。例如,OneDay 的主题拥有 10 种配色方案,而默认图标只有绿白配色。从 iOS 10.3 开始,系统增加了一个动态更换图标的功能,允许应用在特定用户操作时,提前内置图标素材,例如在用户按下应用图标时显示一个独特的图标。这篇文章将从头开始讲解如何实现这个功能。

应用图标概述

在 iOS 系统中,每个应用的图标都是一个带有 .appiconset 扩展名的文件夹,里面包含了不同尺寸的图标图片。这些图片会被系统自动裁剪成不同的大小,以便在不同的设备和分辨率下显示。

应用图标的尺寸有以下几种:

  • 120x120 像素:用于主屏幕图标
  • 180x180 像素:用于 Spotlight 搜索结果
  • 1024x1024 像素:用于 App Store 和 iTunes

添加动态图标更换功能

  1. 创建一个新的 .xcassets 文件夹,并将它添加到项目中。
  2. .xcassets 文件夹中,创建一个新的 Image Set。
  3. 将所有不同尺寸的图标图片添加到 Image Set 中。
  4. 在项目中,打开 Info.plist 文件。
  5. Info.plist 文件中,找到 CFBundleIcons 字段。
  6. 将 Image Set 的名称添加到 CFBundleIcons 字段中。
  7. 在项目中,打开 AppDelegate.swift 文件。
  8. AppDelegate.swift 文件中,添加以下代码:
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // 设置应用图标
    UIApplication.shared.setAlternateIconName("MyIcon") { (error) in
      if let error = error {
        // 处理错误
      }
    }
    return true
  }

}
  1. 运行项目,并按下应用图标。

此时,你应该会看到应用图标已经更换成了你在 Image Set 中添加的图标。

注意事项

  • 应用图标更换功能仅适用于 iOS 10.3 及更高版本的设备。
  • 你可以在应用中添加多个 Image Set,并在不同的情况下更换图标。例如,你可以创建一个圣诞节主题的 Image Set,并在圣诞节期间使用它。
  • 你可以通过调用 UIApplication.shared.setAlternateIconName(nil) 方法来恢复默认图标。