如何在 SafariViewController 中隐藏完成按钮和搜索栏
How to hide the done button and search bar in SafariViewController
我正在使用 SafariViewController
来显示网页,而不是我从我的应用程序 NavigationController
中按下的默认 "done" 按钮来保留我的导航堆栈和后退箭头。但是,我需要隐藏 SafariViewController
上的默认完成按钮和搜索栏。这可能吗?请参阅下面的代码和屏幕截图...
let svc = SFSafariViewController(URL: pinterestSafariURL)
navigationController?.pushViewController(svc, animated: true)
注意:链接到这个问题,但答案是黑客,而我正在寻找使用 SafariViewController API 的解决方案:
如果您需要自定义浏览器界面,请按 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。
有一个 AppCoda tutorial on WKWebView 向您展示了如何创建带有嵌入式 WKWebView
的 ViewController
。希望对您有所帮助!
为丑陋和脆弱做好准备:
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)
}
}
显然 origin y 需要修复 iPhone X 才能或多或少地工作。
UPD:Sharon 在下方(在评论中)暗示这样的 hackery
很可能导致app被苹果拒绝
我很乐意看到 Apple 使用 .none 完成按钮样式来解决这个问题
iOS 14.
可用
我正在使用 SafariViewController
来显示网页,而不是我从我的应用程序 NavigationController
中按下的默认 "done" 按钮来保留我的导航堆栈和后退箭头。但是,我需要隐藏 SafariViewController
上的默认完成按钮和搜索栏。这可能吗?请参阅下面的代码和屏幕截图...
let svc = SFSafariViewController(URL: pinterestSafariURL)
navigationController?.pushViewController(svc, animated: true)
注意:链接到这个问题,但答案是黑客,而我正在寻找使用 SafariViewController API 的解决方案:
如果您需要自定义浏览器界面,请按 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。
有一个 AppCoda tutorial on WKWebView 向您展示了如何创建带有嵌入式 WKWebView
的 ViewController
。希望对您有所帮助!
为丑陋和脆弱做好准备:
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)
}
}
显然 origin y 需要修复 iPhone X 才能或多或少地工作。
UPD:Sharon 在下方(在评论中)暗示这样的 hackery 很可能导致app被苹果拒绝
我很乐意看到 Apple 使用 .none 完成按钮样式来解决这个问题 iOS 14.
可用