美文网首页
Swift动态修改Icon,弹窗消除

Swift动态修改Icon,弹窗消除

作者: 囚你于无期_99bb | 来源:发表于2021-07-23 17:32 被阅读0次

extension UIViewController {

    //通过运行时替换系统的present方法

    public class func zxxPReplaceSystemP(){

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

        letzxxSelector =#selector(UIViewController.zxx_present(_:animated:completion:))

        letsystemMethod =class_getInstanceMethod(self, systemSelector)

        letzxxMethod =class_getInstanceMethod(self, zxxSelector)

        //先进行判断一下原有类中是否有要替换方法的实现

        letdidAddMethod:Bool=class_addMethod(self, systemSelector,method_getImplementation(zxxMethod!),method_getTypeEncoding(zxxMethod!))

        ifdidAddMethod {

            class_replaceMethod(self, zxxSelector, method_getImplementation(systemMethod!), method_getTypeEncoding(systemMethod!))

        }else{

            method_exchangeImplementations(systemMethod!, zxxMethod!)

        }

    }

    @objcpublicfunczxx_present(_viewControllerToPresent:UIViewController, animated flag:Bool, completion: (() ->Void)? =nil) {

        ifviewControllerToPresent.isKind(of:UIAlertController.classForCoder()) {

            letalertController = viewControllerToPresentas?UIAlertController

            ifalertController?.title==nil&&alertController?.message==nil{

                return

            }else{

                self.zxx_present(viewControllerToPresent, animated: flag)

                return

            }

        }

        self.zxx_present(viewControllerToPresent, animated: flag)

    }

}

相关文章

网友评论

      本文标题:Swift动态修改Icon,弹窗消除

      本文链接:https://www.haomeiwen.com/subject/uejpmltx.html