修改UIAlertAction 的文字颜色

来源:互联网 发布:单农为什么淘宝没有 编辑:程序博客网 时间:2024/05/16 08:53
extension UIAlertAction {
   func setTextColor(color: UIColor) {
       var count: uint = 0;
       let ivars =  class_copyIvarList(UIAlertAction.classForCoder(), &count)
       for i in 0 ..< Int(count) {
           let ivar = ivars[i]
           let name = ivar_getName(ivar)
           if let varName = String.fromCString(name) {
               if varName == "_titleTextColor" {
                   self.setValue(color, forKey: "titleTextColor")
               }
           }
       }
   }
}

extension UIAlertController {
   func setTitleColor(color: UIColor) {
       var count: uint = 0;
       let ivars =  class_copyIvarList(UIAlertAction.classForCoder(), &count)
       for i in 0 ..< Int(count) {
           let ivar = ivars[i]
           let name = ivar_getName(ivar)
           if let varName = String.fromCString(name) {
               if varName == "_attributedTitle" {
                   self.setValue(color, forKey: "attributedTitle")
               }
           }
       }
   }
   
   func setMessageColor(color: UIColor) {
       var count: uint = 0;
       let ivars =  class_copyIvarList(UIAlertAction.classForCoder(), &count)
       for i in 0 ..< Int(count) {
           let ivar = ivars[i]
           let name = ivar_getName(ivar)
           if let varName = String.fromCString(name) {
               if varName == "_attributedMessage" {
                   self.setValue(color, forKey: "attributedMessage")
               }
           }
       }
   }
   
   func show() {
       let alert = Alert(alertController: self)
       Alert.showViewCtrl(self)
       AlertManager.defaultManager().addAlert(alert)
   }

}


用法:

- (void)alertStartDownloadOnWWAN:(void(^)())blockDownload {

    if (self.netWorkState.netWorkStatus != NetworkViaWiFi && self.netWorkState.netWorkStatus !=NetworkNone) {

        NSString *message =NSLocalizedString(@"2G/3G/4G下载将消耗您的数据流量,是否继续?",nil);

        NSString *cancel =NSLocalizedString(@"继续下载",nil);

        UIAlertController *alertController = [UIAlertControlleralertControllerWithTitle:@""message:message preferredStyle:UIAlertControllerStyleAlert];

        UIAlertAction *actionDownload = [UIAlertActionactionWithTitle:cancel style:UIAlertActionStyleDestructivehandler:^(UIAlertAction *_Nonnull action) {

            if (blockDownload !=nil) {

                blockDownload();

            }

        }];

        [actionDownload setTextColor:[UIColorblueColor]];

        UIAlertAction *actionNotDownload = [UIAlertActionactionWithTitle:@"取消"style:UIAlertActionStyleDestructivehandler:^(UIAlertAction *_Nonnull action) {

        }];

         [actionNotDownload setTextColor:[UIColorblueColor]];

        [alertController addAction:actionDownload];

        [alertController addAction:actionNotDownload];

        [alertController show];

    } elseif (blockDownload != nil){

        blockDownload();

    }

}


0 0