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

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

提问人:Gurpreet Singh 提问时间:3/9/2021 最后编辑:Gurpreet Singh 更新时间:3/27/2021 访问量:210

问:

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

enter image description here

2

  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)
          // }
}
iOS Swift iPhone UIDuageController 警报

评论

0赞 Anbu.Karthik 3/9/2021
你能展示你尝试过的代码吗
0赞 Gurpreet Singh 3/9/2021
但这只是警报代码,我在所有警报和导航标题和按钮标题中都有问题。
1赞 Arik Segal 3/9/2021
在代码中搜索 .appearance() 并检查是否有 .appearance()。[某些属性]最近发生了变化
0赞 Gurpreet Singh 3/9/2021
我搜索了.appearance() 在整个项目中,我只得到了 IQKeyboard 管理器,FS 日历文件,除此之外我没有任何其他code.@ArikSegal,而且日历的代码也不在这个类中。

答:

1赞 Abv 3/9/2021 #1

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

2赞 Daniel Lyon 3/27/2021 #2

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

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

我注意到的第一件事是代码中的注释,上面写着:

//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)
        }

此外,请检查显示 ViewController 上的 tintColor,尝试在显示警报之前更改它。

查看行为是否更改。

如果没有:

我会在你的代码和故事板中研究 的用法。 也可以在代码中寻找 的用法。tintColorappearance()

我建议这样做,因为我能想到的全局更改 textColor 的唯一方法(不使用扩展名)是这样的

UIApplication.shared.keyWindow?.tintColor = .white

UILabel.appearance().textColor = .white

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

此外,正如 ABV 建议的那样,查找并检查 especially 或 的任何用法。UIColor.white.clear

如果所有其他方法都失败了并且您找不到原因,也许您可以使用上述代码/建议来扭转效果,但是我强烈建议找到并纠正根本原因,而不是添加更多解决方法来解决问题。

如果没有访问该项目,它真的是一个猜谜游戏。

评论

1赞 Gurpreet Singh 3/27/2021
这是一个问题。UIApplication.shared.keyWindow?。tintColor = .white 非常感谢。