如何隐藏SafariViewController中的完成按钮和搜索栏

时间:2016-04-14 02:45:48

标签: ios swift sfsafariviewcontroller

我使用SafariViewController来显示网页,而不是默认"已完成"按钮我从我的应用程序NavigationController推送以保留我的导航堆栈和后退箭头。但是,我需要隐藏SafariViewController上的默认完成按钮和搜索栏。这可能吗?请参阅下面的代码和屏幕截图...

let svc = SFSafariViewController(URL: pinterestSafariURL)
            navigationController?.pushViewController(svc, animated: true)

enter image description here

注意:链接到这个问题,但答案是黑客,而我正在寻找使用SafariViewController API的解决方案:SFSafariViewController: Hide navigation bar

2 个答案:

答案 0 :(得分:6)

SFSafariViewController上的每{{}}},似乎没有一种可公开访问的隐藏完成按钮或网址栏的方法。如果您需要自定义浏览器界面,Apple建议您使用Apple's documentation

有一个WKWebView,可以向您展示如何使用嵌入式ViewController创建WKWebView。希望有所帮助!

答案 1 :(得分:0)

为自己的丑陋和脆弱做好准备:

extension MyViewController: SFSafariViewControllerDelegate
{
    func safariViewController(_ controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool)
    {
        let f = CGRect(origin: CGPoint(x: 0, y: 20),
                       size: CGSize(width: 90, height: 44))
        let uglyView = UIView(frame: f)
        uglyView.backgroundColor = svc.view.backgroundColor
        controller.view.addSubview(uglyView)
    }
}

很明显,起源y需要修复iPhone X才能使它工作或多或少。我很高兴看到Apple使用.none按钮样式来解决此问题 在iOS 14中可用。