Swift - 自定义颜色主题和SFSafariViewController

时间:2017-11-12 11:54:07

标签: ios swift

我将自定义颜色应用于多个视图,如下所示:

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

2 个答案:

答案 0 :(得分:0)

我认为你将很难完成你的方法 - 改变UIView的背景颜色会改变从UIView继承的每个视图的背景颜色,你发现它包括整个SFSafariViewController - 按钮和所有。

我建议更好的方法是更具体地说明要为UIButton,UITabBar等设置背景颜色的视图类型。如果您还有实际的UIViews,您需要更改,您可以创建一个子类并在其上设置外观。您的UIView子类可以为空:

class MyCustomView: UIView {

}

然后你可以在这个视图上设置你的外观:

MyCustomView.appearance().backgroundColor = .black

在Interface Builder中,选择您的视图并为其设置自定义类:

custom view class

答案 1 :(得分:0)

没有必要这样做。

只需使用CSafariWebKit并在BarTintColor和TintColor中设置您想要的颜色:

let vc = SafariViewController(url: url, barTintColor: nil, tintColor: nil)
vc.presentSafari(fromViewController: self, whenDidFinish: nil)