改变APP的图标
下面介紹的應(yīng)用圖標(biāo)切換的方法只是其中的一個思路.并不是說要切換應(yīng)用圖標(biāo)只有這一種方法.如果有其他更好的方法可以私信交流一下.
1.首先,這個方法需要設(shè)置Info.plist文件.
字段名1:CFBundleAlternateIcons
字段名2:CFBundleIconFiles
item0是String類型的,item0的內(nèi)容就是圖片的名字.可以不帶圖片的拓展名.
///切換應(yīng)用圖標(biāo)@IBAction func whiteAppIconBtnClick(_ sender: UIButton) {if supportAlternateIcons() == true {UIApplication.shared.setAlternateIconName(nil, completionHandler:nil)}}@IBAction func redAppIconBtnClick(_ sender: UIButton) {if supportAlternateIcons() == true {UIApplication.shared.setAlternateIconName("AppIconRed", completionHandler:nil)}}@IBAction func blueAppIconBtnClick(_ sender: UIButton) {if supportAlternateIcons() == true {UIApplication.shared.setAlternateIconName("AppIconBlue", completionHandler:nil)}}func supportAlternateIcons() -> Bool {///判斷是否支持切換應(yīng)用的APPIconreturn UIApplication.shared.supportsAlternateIcons}Swift中的方法交換
我們看到.每次切換應(yīng)用圖片的時候都會有一個彈窗,我們現(xiàn)在想要把這個彈窗給去掉.那么怎么去掉呢.
按照OC的Runtime.那么就是MethodSwizzing.也就是方法交換啦.
但是按照OC的這個來寫的話.方法并不會交換.
原因,OC是消息機制的一門語言.調(diào)用什么方法是在程序運行的時候才決定的.就相當(dāng)于.方法A,B,C,D都在一個小黑屋里面.對象AA往小黑屋里面喊話.我要調(diào)用A方法啦.一般情況下,A方法就被調(diào)用了.方法交換是個什么意思呢.就相當(dāng)于喊A的時候,這時候小黑屋的管理員說.A你不用出去執(zhí)行方法.你和C交換一下.差不多是這個意思.
解決:在要交換的方法處插入@objc dynamic
override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.///交換方法去使系統(tǒng)的APP圖標(biāo)已經(jīng)改變不彈出let firstMethod = class_getInstanceMethod(self.classForCoder,#selector(dy_present(_:animated:completion:)))let secondMethod = class_getInstanceMethod(self.classForCoder,#selector(present(_:animated:completion:)))method_exchangeImplementations(firstMethod!, secondMethod!)}@objc dynamic func dy_present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {if viewControllerToPresent.isKind(of: UIAlertController.classForCoder()) {print("yes")}}運行結(jié)果:
github地址
總結(jié)
- 上一篇: 计算机休眠快捷键设置在哪里设置,电脑待机
- 下一篇: 深入理解编译注解(三)依赖关系 apt/