提问人:Gurpreet Singh 提问时间:3/9/2021 最后编辑:Gurpreet Singh 更新时间:3/27/2021 访问量:210
我的导航栏和警报标题以及底部警报标题在整个项目中变为白色
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)
// }
}
答:
我没有足够的声誉在评论部分发帖,但我建议你寻找任何写 .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)
}
此外,请检查显示 ViewController 上的 tintColor,尝试在显示警报之前更改它。
查看行为是否更改。
如果没有:
我会在你的代码和故事板中研究 的用法。
也可以在代码中寻找 的用法。tintColor
appearance()
我建议这样做,因为我能想到的全局更改 textColor 的唯一方法(不使用扩展名)是这样的
UIApplication.shared.keyWindow?.tintColor = .white
或
UILabel.appearance().textColor = .white
就此而言,我会看看项目中是否有任何扩展,以及他们是否仔细研究了那里发生的事情。UIAlertController
UIViewController
此外,正如 ABV 建议的那样,查找并检查 especially 或 的任何用法。UIColor
.white
.clear
如果所有其他方法都失败了并且您找不到原因,也许您可以使用上述代码/建议来扭转效果,但是我强烈建议找到并纠正根本原因,而不是添加更多解决方法来解决问题。
如果没有访问该项目,它真的是一个猜谜游戏。
评论