GBA001/Delta/Extensions/Bundle+AppIconImage.swift
Riley Testut f3534e4415 [ExpFeat] Alternate App Icons (#259)
commit 34ed9726034adbb439515ccb3d576311603bfe2b
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Thu Aug 3 15:31:47 2023 -0400

    Removes `experimentalFeatures` property from `Settings`

commit 4e31d22d56d68439a340707d2fdbac3763df1e3a
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Thu Aug 3 15:17:47 2023 -0400

    Reorder icons

commit 7509eaa29946b622ce0ad920a740f0212db5e771
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Thu Aug 3 15:17:24 2023 -0400

    Moves icon changing code to `AlternateAppIcons`

commit 84821ef99ded74c066563041618aec3c4acb30d7
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Thu Aug 3 14:33:15 2023 -0400

    Fixes icon authors

commit 0b821830f09b434fa375c37a2504c21ee5f90bdb
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Fri Jul 21 01:44:00 2023 -0400

    Adds comments for functional alternate app icon code

commit e8dd6165619bc143f13dde51e5160af2695ef17e
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Fri Jul 21 01:30:03 2023 -0400

    Adds implementation for changing app icon

commit 1e07483d18d1e865804ae34d6011844b63cb33cc
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Fri Jul 21 01:28:24 2023 -0400

    Adds Alternate App Icon experimental feature and options

commit 46ed2ce3ae9593d4cc95f29d6caa09f33f2ce62d
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Fri Jul 21 01:26:51 2023 -0400

    Adds extension to handle retrieving app icon images

commit 9dddb5f98f4523e7877f97c66a5ae95e6513cc09
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Fri Jul 21 01:24:19 2023 -0400

    Adds experimental features as a property of `Settings`

commit d74038fd418a0e6fcd45942cb67e722904fc3e24
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Fri Jul 21 01:23:02 2023 -0400

    Adds alternate icon assets

Co-authored-by: Chris Rittenhouse <dev@litritt.com>
2023-08-10 19:46:08 -05:00

35 lines
1.1 KiB
Swift

//
// Bundle+AppIconImage.swift
// Delta
//
// Created by Chris Rittenhouse on 7/20/23.
// Copyright © 2023 LitRitt. All rights reserved.
//
import UIKit
extension Bundle
{
static func appIcon(for icon: AppIcon = .normal) -> UIImage? {
guard let appIcons = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any] else { return nil }
switch icon
{
case .normal:
guard let primaryAppIcon = appIcons["CFBundlePrimaryIcon"] as? [String: Any],
let appIconFiles = primaryAppIcon["CFBundleIconFiles"] as? [String],
let appIcon = appIconFiles.first else { return nil }
return UIImage(named:appIcon)
default:
guard let alternateAppIcons = appIcons["CFBundleAlternateIcons"] as? [String: Any],
let alternateAppIcon = alternateAppIcons[icon.assetName] as? [String: Any],
let appIconFiles = alternateAppIcon["CFBundleIconFiles"] as? [String],
let appIcon = appIconFiles.first else { return nil }
return UIImage(named:appIcon)
}
}
}