Alternate Icon in iOS 10.3

前端 未结 2 581
失恋的感觉
失恋的感觉 2020-12-03 03:11

I have the info on how to set up alternate icons in iOS 10.3 adding the key in the Info.plist. However, what I am not sure of is which sizes are needed for each alternate.

2条回答
  •  猫巷女王i
    2020-12-03 03:50

    Since the biggest problem is how to configure the icon image source and info.plist, here is a sample to tell you how to set alternate icons in iOS 10.3, implemented in Swift 3.

    Assets.xcassets info.plist

    1. If your app doesn't support iPad, the icon image source can be 60pt@2x and 60pt@3x (120x120 180x180), and the 20pt 29pt and 40pt all can be generated from the 60pt image. So, your alternate icon image source should also be 60pt@2x and 60pt@3x, if it is a iPhone-only app. And it should be 83.5pt, if your app supports iPad Pro.

    2. Like what you saw in the picture, the alternate icon image should be added to the project as a png file (the blackBgColor image in my sample), but not added to Assets.xcassets.

    3. The configuration for alternate icons in info.plist is kinda complicated, so if this is your first time doing this, I suggest you copy my code in plist. And, notice my alternate icon's name (blackBgColor) has beed used TWICE in plist, if you are gonna change the icon's name based on my version, make sure you changed the name in both of the two places.

      CFBundleIcons
      
          CFBundleAlternateIcons
          
              blackBgColor
              
                  CFBundleIconFiles
                  
                      blackBgColor
                  
                  UIPrerenderedIcon
                  
              
          
          CFBundlePrimaryIcon
          
              CFBundleIconFiles
              
                  AppIcon60x60
              
          
      
      

    Now, code in ViewController will be simple.

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        @IBAction func changeAppIcon(_ sender: Any) {
    
            if UIApplication.shared.supportsAlternateIcons {
                print("you can change this app's icon")
            }else {
                print("you cannot change this app's icon")
                return
            }
    
            if let name = UIApplication.shared.alternateIconName {
                // CHANGE TO PRIMARY ICON
                UIApplication.shared.setAlternateIconName(nil) { (err:Error?) in
                    print("set icon error:\(String(describing: err))")
                }
                print("the alternate icon's name is \(name)")
            }else {
                // CHANGE TO ALTERNATE ICON
                UIApplication.shared.setAlternateIconName("blackBgColor") { (err:Error?) in
                    print("set icon error:\(String(describing: err))")
                }
            }
        }
    
    }
    

提交回复
热议问题