Swift動(dòng)態(tài)修改Icon荷科,消除系統(tǒng)彈窗

背景

電商項(xiàng)目總喜歡在特定節(jié)日展示不同的icon圖標(biāo)出嘹,但是為了修改圖標(biāo)而更新版本的話席楚,沒(méi)那個(gè)必要。
這里介紹一種不需要通過(guò)更新版本就可以動(dòng)態(tài)修改APP圖標(biāo)的方法税稼。

??注意:該方法在iOS10.3及以上有效

實(shí)現(xiàn)

  • 1 導(dǎo)入待替換的新圖片烦秩,放到項(xiàng)目工程新文件夾中;
  • 2 配置 Info.plist 文件:
<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>icon1</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>icon1</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
        <key>icon2</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>icon2</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
    <array>
        <string>AppIcon60x60</string>
    </array>
    </dict>
</dict>
  • 3 通過(guò)代碼替換
        if #available(iOS 10.3, *) {
            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  恢復(fù)默認(rèn) 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 指定icon圖標(biāo)
                UIApplication.shared.setAlternateIconName("icon1") { (err:Error?) in
                    print("set icon error:\(String(describing: err))")
                }
            }
        }
  • 4 去掉更換圖標(biāo)時(shí)的彈框
    更換圖標(biāo)時(shí)會(huì)出現(xiàn)系統(tǒng)彈框郎仆,可以使用Runtime來(lái)隱藏彈框只祠,這樣方便在節(jié)日時(shí)候程序自動(dòng) 無(wú)感 更改APP 的icon
    具體代碼如下:
extension UIViewController {

  //通過(guò)運(yùn)行時(shí)替換系統(tǒng)的present方法

  public class func nkReplaceSystemPresent(){

    let systemSelector = #selector(UIViewController.present(_:animated:completion:))

    let nkSelector = #selector(UIViewController.newPesent(_:animated:completion:))



    let systemMethod = class_getInstanceMethod(self, systemSelector)

    let nkNewMethod = class_getInstanceMethod(self, nkSelector)
      method_exchangeImplementations(systemMethod!, nkNewMethod!)

  }



  @objc public func newPesent(_ vcToPresent:UIViewController, animated flag:Bool, completion: (() ->Void)? = nil) {

    if vcToPresent.isKind(of:UIAlertController.self) {

      let alertController = vcToPresent as? UIAlertController

      if alertController?.title==nil && alertController?.message==nil {
        return
      }
    }

    self.newPesent(vcToPresent, animated: flag)

  }

}
 

然后在滿足需求的控制器中調(diào)用即可。
方法如下:

    override func viewDidLoad() {
        super.viewDidLoad()
        DH_MyViewController.nkReplaceSystemPresent()
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扰肌,一起剝皮案震驚了整個(gè)濱河市抛寝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狡耻,老刑警劉巖墩剖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異夷狰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)郊霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門沼头,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事进倍⊥林粒” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵猾昆,是天一觀的道長(zhǎng)陶因。 經(jīng)常有香客問(wèn)我,道長(zhǎng)垂蜗,這世上最難降的妖魔是什么楷扬? 我笑而不...
    開(kāi)封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮贴见,結(jié)果婚禮上烘苹,老公的妹妹穿的比我還像新娘。我一直安慰自己片部,他們只是感情好镣衡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著档悠,像睡著了一般廊鸥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辖所,一...
    開(kāi)封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天黍图,我揣著相機(jī)與錄音,去河邊找鬼奴烙。 笑死助被,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的切诀。 我是一名探鬼主播揩环,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼幅虑!你這毒婦竟也來(lái)了丰滑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤倒庵,失蹤者是張志新(化名)和其女友劉穎褒墨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體擎宝,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郁妈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绍申。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噩咪。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顾彰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胃碾,到底是詐尸還是另有隱情涨享,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布仆百,位于F島的核電站厕隧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏俄周。R本人自食惡果不足惜吁讨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栈源。 院中可真熱鬧挡爵,春花似錦、人聲如沸甚垦。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)艰亮。三九已至闭翩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迄埃,已是汗流浹背疗韵。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侄非,地道東北人蕉汪。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子互订,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 動(dòng)態(tài)更換app的圖標(biāo),就是在不重新安裝app的情況下驹马,可以動(dòng)態(tài)更黃當(dāng)前的icon圖標(biāo)。該方法只能在系統(tǒng)版本iOS1...
    光之鹽汽水閱讀 10,999評(píng)論 1 13
  • 該功能應(yīng)用的場(chǎng)景 1除秀、白天/夜間模式切換糯累,在切換App主色調(diào)同時(shí)切換App圖標(biāo)。 2册踩、各類皮膚主題(淘寶就可換膚)...
    Dayon閱讀 2,237評(píng)論 0 3
  • 背景 項(xiàng)目開(kāi)發(fā)過(guò)程中泳姐,可能會(huì)有更換項(xiàng)目圖標(biāo)的需求,比如一些電商的應(yīng)用棍好,在雙11仗岸,618允耿,新年等節(jié)日的時(shí)候需要顯示特...
    yuebiubiu閱讀 1,598評(píng)論 1 6
  • 首先需要注意的是借笙,動(dòng)態(tài)更換圖標(biāo)需要在iOS10.3之后才可以使用 第一步扒怖、需要在info.plist中配置圖標(biāo)的一...
    i_蘇閱讀 1,108評(píng)論 2 2
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料业稼? 從這篇文章中你...
    hw1212閱讀 12,723評(píng)論 2 59