iOS26适配指南之Liquid Glass App Icon

介绍

  • Xcode 26 内置了 Icon Composer 应用,能够创建.icon的设计文件,可以让开发者与设计师创建符合 "Liquid Glass" 风格的全平台(iOS、macOS、 watchOS) App Icon。
  • 通过 Icon Composer 将设计好的.icon文件导出,然后导入 iOS 项目,在项目设置中选择该文件作为 App Icon,勾选Include all app icon assets,即可作为 App 的图标使用。

案例:动态切换图标

  • 代码。
swift 复制代码
import UIKit

enum AppIcon: String, CaseIterable {
    case defaultIcon
    case redIcon
    case greenIcon
    case blueIcon

    // icon文件的名称
    var iconName: String? {
        switch self {
        case .defaultIcon:
            return nil // 默认图标
        case .redIcon:
            return "RedIcon" // 第1个icon
        case .greenIcon:
            return "GreenIcon" // 第2个icon
        case .blueIcon:
            return "BlueIcon" // 第3个icon
        }
    }
}

class ViewController: UIViewController {
    lazy var segmentedControl: UISegmentedControl = {
        let segmentedControl = UISegmentedControl(items: AppIcon.allCases.map { $0.rawValue })
        segmentedControl.selectedSegmentIndex = 0
        segmentedControl.translatesAutoresizingMaskIntoConstraints = false
        segmentedControl.addTarget(self, action: #selector(valueChanged), for: .valueChanged)
        return segmentedControl
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(segmentedControl)
        
        NSLayoutConstraint.activate([
            segmentedControl.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            segmentedControl.centerYAnchor.constraint(equalTo: view.centerYAnchor),
            segmentedControl.leadingAnchor.constraint(greaterThanOrEqualTo: view.leadingAnchor, constant: 20),
            segmentedControl.trailingAnchor.constraint(lessThanOrEqualTo: view.trailingAnchor, constant: -20)
        ])
    }

    @objc func valueChanged(_ sender: UISegmentedControl) {
        let selectedIndex = sender.selectedSegmentIndex
        let selectedIcon = AppIcon.allCases[selectedIndex]
        if UIApplication.shared.supportsAlternateIcons {
            UIApplication.shared.setAlternateIconName(selectedIcon.iconName) { error in
                if error != nil {
                    print(error?.localizedDescription)
                } else {
                    print("切换App图标成功")
                }
            }
        } else {
            print("不支持切换App图标")
        }
    }
}
  • 效果。
相关推荐
皇上o_O21 小时前
深入理解 Swift Concurrency:从 async/await 到隔离域
ios
CocoaKier1 天前
1月12日最新用户隐私保护政策出炉,政策解读
ios
Mr -老鬼1 天前
移动端跨平台适配技术框架:从发展到展望
android·ios·小程序·uni-app
tiantian_cool2 天前
Claude Code 四大核心技能使用指南
ios
冰淇淋真好吃2 天前
iOS实现 WKWebView 长截图的优雅方案
ios
njsgcs2 天前
Swift playground 网页刷新切换随机页面的网页查看器WebKit
swift
前端不太难2 天前
Flutter / RN / iOS,在长期维护下的性能差异本质
flutter·ios
搜狐技术产品小编20233 天前
精通 UITableViewDiffableDataSource——从入门到重构的现代 iOS 列表开发指南
ios·重构
tangweiguo030519873 天前
SwiftUI 状态管理完全指南:从 @State 到 @EnvironmentObject
ios
Digitally3 天前
如何轻松地将文件从 PC 传输到 iPhone
ios·iphone