How to hide the done button and search bar in SafariViewController
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!
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.
UPD: Sharon implies down below (in the comments) that such a hackery is likely to cause the app rejected by apple.
I'd love to see Apple fix this with .none done button styling available in iOS 14.