我有一个导航栏,在深色背景颜色上使用白色调颜色。我使用UIActivityViewController
与iOS共享表共享链接。
当我选择WhatsApp或Messages应用程序来共享内容时,导航按钮具有默认的蓝色色调。此外,搜索栏(在WhatsApp的情况下)具有灰色色调,这使得难以阅读。
我无法改变色调颜色。我的代码:
let textToShare = "Visit my website!"
if let myWebsite = NSURL(string: "http://google.com") {
let objectsToShare = [textToShare, myWebsite]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
self.presentViewController(activityVC, animated: true, completion: {
activityVC.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
activityVC.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.whiteColor()
activityVC.navigationController?.navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
})
}
有什么想法吗?
编辑:
这不是一个重复的问题,因为它与活动视图控制器的按钮色调颜色无关。它是关于视图控制器的导航控制器的按钮颜色,如图所示。按下iMessage上的分享。
答案 0 :(得分:1)
您可以通过在app delegate的UIWindow实例上设置tintColor来为UIActivityViewController提供的视图控制器设置tintColor。无论何时或如何设置,在UIActivityViewController上设置tintColor似乎都没有效果。
在你的app delegate:
self.window.tintColor = [theme navBarItemsTintColor];
答案 1 :(得分:0)
以上两种解决方案都不适用于我,但是我发现了另一种设置tintColor的方法-通过TextAttributes。在init
或viewDidLoad()
的UIActivityViewController中,添加以下代码(是的,仅自iOS 11起可用):
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 11.0, *) {
let normalAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.purple]
UIBarButtonItem.appearance().setTitleTextAttributes(normalAttributes, for: .normal)
let disabledAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.gray]
UIBarButtonItem.appearance().setTitleTextAttributes(disabledAttributes, for: .disabled)
}
}
此外,如果您打算仅更改当前ViewController的颜色(在我们的示例中为UIActivityViewController),请不要忘记在关闭时重置值,因为appearance()
是整个样式的全局样式集应用程序。
答案 2 :(得分:0)
在iOS 14.2上共享文件的情况下,我必须使用所有这3行来更改“保存”,“取消”和文件夹图标的颜色:
UIButton.appearance(whenContainedInInstancesOf: [UINavigationBar.self]).tintColor = .blue
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.self]).tintColor = .blue
UIBarButtonItem.appearance().setTitleTextAttributes([.foregroundColor: .blue], for: .normal)
并且在离开视图时必须将其改回
activityVC.completionWithItemsHandler = { (_, _: Bool, _: [Any]?, _: Error?) in
UIButton.appearance(whenContainedInInstancesOf: [UINavigationBar.self]).tintColor = .white
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.self]).tintColor = .white
UIBarButtonItem.appearance().setTitleTextAttributes([.foregroundColor: .white], for: .normal)
}
我承认它看起来很丑,但这是唯一对我有用的东西