ios - 加载 webview 时,带有大标题的导航栏会缩小
问题描述
在 viewcontroller 中,我正在加载启用了大导航标题的 webview(WKWebview)。问题是它在 webview 加载之前完美地显示了大型导航栏和标题,一旦 webview 加载它就会缩小到正常。任何帮助,将不胜感激。
提前致谢...!
解决方案
斯威夫特4,斯威夫特5:
- 此问题的原因是当您的 webView 开始加载页面时,您的 navigationBar 高度正在发生变化。所以使用
viewLayoutMarginsDidChange()
我们可以改变导航栏的高度。 viewLayoutMarginsDidChange()
调用以通知视图控制器其根视图的布局边距已更改。每次导航栏高度发生变化时都会调用此方法。
下面的代码对我有用
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
private var webView: WKWebView!
var didChange = false //Set true when we have to update navigationBar height in viewLayoutMarginsDidChange()
override func viewLayoutMarginsDidChange() {
if didChange {
print("Height : - \(self.navigationController?.navigationBar.frame.size.height)")
// set NavigationBar Height here
self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 96.0)
didChange.toggle()
}
}
override func viewDidLoad() {
super.viewDidLoad()
let appearance = UIBarButtonItem.appearance()
appearance.setBackButtonTitlePositionAdjustment(UIOffset.init(horizontal: 0.0, vertical: -60), for: .default)
self.navigationItem.title = "WebView"
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.tintColor = UIColor.black
self.navigationController?.navigationBar.prefersLargeTitles = true
webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
webView.navigationDelegate = self
view = webView
let myURL = URL(string:"https://google.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Did Start")
//webView page starts loading
didChange = true
}
}
推荐阅读
- discord.js - 错误提供的选项不是对象。在 Message.delete
- html - 页面转向 http 而不是 https 并且不加载导航栏
- sql - 用于 SQL 查询的弹性搜索查询
- java - 从 int[] 到 int 的不兼容转换
- javascript - 我怎样才能让我的 Discord 机器人在被提及时识别它?
- python - IndentationError: unindent does not match any external indentation level 帮我解决这个问题?
- c# - 玩家与对象碰撞后如何再次重生对象?
- java - 如果数据已经存在,Android Studio SQLite 不会将数据插入数据库
- api - Cypress api 测试 graphql 查询和查询变量
- python - 如何将来自客户端的消息存储在服务器中并通过 Flask 中的某些路由进一步发送