我的导航栏和警报标题和底部警报标题在整个项目中变成白色
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
就此而言,我会查看 UIAlertController
或 UIViewController
是否在项目中进行了任何扩展,以及他们是否会仔细查看那里发生的事情。
此外,正如 ABV 建议的那样,查找并检查任何对 UIColor
的使用,尤其是 .white
或 .clear
.
如果 ALL else 失败了,你找不到原因也许你可以使用上面的 code/suggestions 来逆转效果,但是我 强烈 建议找到并纠正根本原因,而不是添加更多解决方法来解决问题。
没有项目权限,真的是猜谜。
我的导航栏和警报标题和底部警报标题在整个项目中变成了白色。我只找到了仅对个别警报执行但不是全局警报的答案。
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
就此而言,我会查看 UIAlertController
或 UIViewController
是否在项目中进行了任何扩展,以及他们是否会仔细查看那里发生的事情。
此外,正如 ABV 建议的那样,查找并检查任何对 UIColor
的使用,尤其是 .white
或 .clear
.
如果 ALL else 失败了,你找不到原因也许你可以使用上面的 code/suggestions 来逆转效果,但是我 强烈 建议找到并纠正根本原因,而不是添加更多解决方法来解决问题。
没有项目权限,真的是猜谜。