问题
I'm using SafariViewController
to 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