您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SFSafariViewController:隐藏导航栏

SFSafariViewController:隐藏导航栏

将此代码放入 viewDidAppear:

let safariViewController = SFSafariViewController(URL: url)
presentViewController(safariViewController, animated: true) {
    var frame = safariViewController.view.frame
    let OffsetY: CGFloat  = 64
    frame.origin = CGPoint(x: frame.origin.x, y: frame.origin.y - OffsetY)
    frame.size = CGSize(width: frame.width, height: frame.height + OffsetY)
    safariViewController.view.frame = frame
}

要隐藏状态栏,View controller-based status bar appearanceYES在info.plist文件中将其设置为并将其插入到视图控制器中。

override func prefeRSStatusBarHidden() -> Bool {
    return true
}

:我建议您不要使用SFSafariViewController进行全屏查看,因为无法重新加载(因为UINavigationBar中有重新加载按钮)。如果请求失败,它将使应用程序无用。而是选择带有自定义工具栏的全屏WKWebView。

:为避免隐藏重新加载按钮,只需在SFSafariViewController中的完成按钮上方添加一个view / imageView,并使该按钮不可见或至少不可应用。

presentViewController(svc, animated: true) {
    let width: CGFloat = 66
    let x: CGFloat = self.view.frame.width - width

    // It can be any overlay. May be your logo image here inside an imageView.
    let overlay = UIView(frame: CGRect(x: x, y: 20, width: width, height: 44))
    overlay.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.5)
    svc.view.addSubview(overlay)
}

这种方法的问题仅在于覆盖层保留在屏幕上,但是如果您能找到一个不错的图像,那就可以了。

其他 2022/1/1 18:21:31 有612人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶