我的导航栏和警报标题和底部警报标题在整个项目中变成白色

My Navigation bar and Alert title and Bottom Alert title became white in whole project

我的导航栏和警报标题和底部警报标题在整个项目中变成了白色。我只找到了仅对个别警报执行但不是全局警报的答案。

  func inliseAlert(_ imageSelection:Int,_ VC:UIViewController ,_ success:@escaping ImageSelectionCompletion) {
//Change color of selection overlay to white
    viewController = VC
    numberOfImage = imageSelection
    self.success = success
    let imageSourceAlert = UIAlertController(title: "Choose Image", message: "", preferredStyle: UIAlertController.Style.actionSheet)
   
    let camera = UIAlertAction(title: "Camera", style: .default) { [weak self](action: UIAlertAction) in
                   // Code to unfollow
                   DispatchQueue.main.async {
                       self?.openCamera()
                   }
               }
   
           let gallery = UIAlertAction(title: "Gallery", style: .default) {[weak self] (action: UIAlertAction) in
               // Code to unfollow
            guard let self = self else {return }
               DispatchQueue.main.async {
                   self.openGallery()
               }
           }
   
   
           let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
           imageSourceAlert.addAction(camera)
           imageSourceAlert.addAction(gallery)
           imageSourceAlert.addAction(cancelAction)
   
         //  if let topController = UIApplication.getTopViewController() {
               viewController?.present(imageSourceAlert, animated: true, completion: nil)
          // }
}

我没有足够的声誉在评论部分 post,但我建议您寻找任何写有 .white 的地方。特别是在你的 appdelegate 中。

这是一些奇怪的行为... 从您发布的屏幕截图来看,您似乎是 运行 在模拟器上,我会确保并检查设备上的行为,以排除任何异常情况。

假设该行为在设备上持续存在:

我首先注意到的是您代码中的注释:

//Change color of selection overlay to white

我会仔细查看它指的是什么以及该过程中发生了什么。

比如刚才出现的评论:

viewController = VC // I think the tintColor of viewController is causing this unwanted behavior

然后当您显示您正在呼叫的警报时:

 //  if let topController = UIApplication.getTopViewController() {
               viewController?.present(imageSourceAlert, animated: true, completion: nil)
          // }

viewController和TopViewController一样吗?? 如果没有,我想我会尝试:

 if let topController = UIApplication.getTopViewController() {
            topController.present(imageSourceAlert, animated: true, completion: nil)
        }

还要检查呈现的 tintColor ViewController 尝试在呈现警报之前更改它。

看看行为是否改变。

如果没有:

我会查看 tintColor 在您的代码和情节提要中的用途。 也可以在您的代码中查找 appearance() 的用法。

我建议因为我能想到的全局更改 textColor 的唯一方法(不使用扩展)类似于

UIApplication.shared.keyWindow?.tintColor = .white

UILabel.appearance().textColor = .white

就此而言,我会查看 UIAlertControllerUIViewController 是否在项目中进行了任何扩展,以及他们是否会仔细查看那里发生的事情。

此外,正如 ABV 建议的那样,查找并检查任何对 UIColor 的使用,尤其是 .white.clear.

如果 ALL else 失败了,你找不到原因也许你可以使用上面的 code/suggestions 来逆转效果,但是我 强烈 建议找到并纠正根本原因,而不是添加更多解决方法来解决问题。

没有项目权限,真的是猜谜。