我将自定义颜色应用于多个视图,如下所示:
class NoBackButtonTitleNavigationDelegate: UINavigationControllerDelegate {
func navigationController(
_ navigationController: UINavigationController,
willShow viewController: UIViewController,
animated: Bool
) {
viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
}
}
这改变了我预期的UIView颜色,但稍后在应用程序中我触发了SFSafariViewController。当SFSafariViewController出现时它全黑。有没有办法识别视图是SFSafariViewController并改变它的颜色?
let uiView = UIView.appearance()
uiView.backgroundColor = .black
答案 0 :(得分:0)
我认为你将很难完成你的方法 - 改变UIView的背景颜色会改变从UIView继承的每个视图的背景颜色,你发现它包括整个SFSafariViewController - 按钮和所有。
我建议更好的方法是更具体地说明要为UIButton,UITabBar等设置背景颜色的视图类型。如果您还有实际的UIViews,您需要更改,您可以创建一个子类并在其上设置外观。您的UIView子类可以为空:
class MyCustomView: UIView {
}
然后你可以在这个视图上设置你的外观:
MyCustomView.appearance().backgroundColor = .black
在Interface Builder中,选择您的视图并为其设置自定义类:
答案 1 :(得分:0)
没有必要这样做。
只需使用CSafariWebKit并在BarTintColor和TintColor中设置您想要的颜色:
let vc = SafariViewController(url: url, barTintColor: nil, tintColor: nil)
vc.presentSafari(fromViewController: self, whenDidFinish: nil)