How to hide the done button and search bar in SafariViewController

不想你离开。 提交于 2019-12-04 12:53:09

问题


I'm using SafariViewControllerto display a webpage, and rather than the default "done" button I push from my app's NavigationController to preserve my nav stack and back arrow. However, I need to hide the default Done button and search bar on the SafariViewController. Is that possible yet? See my code and screen shot below...

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

note: linking to this question, but the answer is a hack whereas I was looking for a solution using SafariViewController API : SFSafariViewController: Hide navigation bar


回答1:


Per Apple's documentation on SFSafariViewController, there does not appear to be a publicly-accessible way to hide either the Done button or the URL bar. Apple suggests that you use WKWebView if you need a custom browser interface.

There's a AppCoda tutorial on WKWebView that shows you how to create a ViewController with an embedded WKWebView. Hope that helps!




回答2:


Brace yourself for ugliness and brittleness:

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)
    }
}

obviously origin y needs fixin' for iPhone X for this to work more or less. I'd love to see Apple fix this with .none done button styling available in iOS 14.



来源:https://stackoverflow.com/questions/36612960/how-to-hide-the-done-button-and-search-bar-in-safariviewcontroller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!