如何使用 Webview frame = self.view.bounds 使导航栏可见?
Posted
技术标签:
【中文标题】如何使用 Webview frame = self.view.bounds 使导航栏可见?【英文标题】:How to make Navigation Bar visible using Webview frame = self.view.bounds? 【发布时间】:2018-01-10 02:50:40 【问题描述】:我的问题是 导航栏在我的 WebView 后面,因为它的框架是 self.view.bounds,并且应用程序不显示导航栏。如果我忽略 WebView frame = self.view.bounds,我的 WebView 不适合 iPhone 8 设备模拟的屏幕。
如何使我的 WebView 适合屏幕的右侧、左侧和底部,并在顶部显示我的导航栏???
我尝试修改我的 WebView 内容模式,但没有任何反应...
导航栏工作正常,后退和刷新按钮也。问题是使用 myWebView.frame=self.view.bounds 使 WebView 适合屏幕,导航栏隐藏在 myWebView 后面:(
我的代码
override func viewDidLoad()
super.viewDidLoad()
myWebView.delegate = self
let myURL=URL(string:"https://www.google.com")
let requestObj = URLRequest(url:myURL!)
myWebView.loadRequest(requestObj)
self.view.addSubview(myWebView)
URLCache.shared.removeAllCachedResponses()
URLCache.shared.diskCapacity = 0
URLCache.shared.memoryCapacity = 0
myWebView.scalesPageToFit = true;
myWebView.frame=self.view.bounds;
my storyboard image
谢谢 ;)
【问题讨论】:
帮助您显示您的代码,否则我们只是猜测。 Oki,有它;) 【参考方案1】:试试这个:
override func viewDidLoad()
super.viewDidLoad()
let navBarHeight: CGFloat = self.navigationController?.navigationBar.frame.height ?? 0.0
title = "Webview"
view.backgroundColor = .white
let webView = UIWebView()
webView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(webView)
webView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: navBarHeight).isActive = true
webView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
webView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
let request = URLRequest(url: URL(string: "https://apple.com")!)
webView.loadRequest(request)
希望对你有帮助
【讨论】:
我没有导航控制器,只是一个导航栏(见我的问题图片) 所以如果你已经通过 Storyboard 创建了一个导航栏,也许你可以创建一个 IBOutlet 并找到组件的高度。或者将高度值放在代码中,而不是 navBarHeight 我不认为问题出在导航栏上,也许我没有很好地解释它。问题是当 FRAME 属性为 SELF.VIEW.BOUNDS 时的 webview,因为导航栏隐藏在后面。 显示你在运行时得到了什么 有没有办法让webview FRAME = SELF.VIEW.BOUNDS(适合任何屏幕尺寸),让导航栏在屏幕顶部???【参考方案2】:最后我解决了这个问题。我所做的是:
1.- 选择我的View Controller。
2.- 在菜单上点击 Editor > Embed In > Navigation Controller
Xcode 添加一个导航控制器,并在视图控制器上添加了一个导航项。在此导航项上,您可以添加 条形按钮项,例如用作后退按钮或刷新按钮。
以前都做了,我还在用:
myWebView.scalesPageToFit = true;
myWebView.frame=self.view.bounds;
我的 WebView 适合使用不同设备的所有屏幕,并且导航栏非常适合 :)
【讨论】:
以上是关于如何使用 Webview frame = self.view.bounds 使导航栏可见?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIWebview 上添加 UISwipeGestureRecognizer
void SendDelegateMessage(NSInvocation*): 委托 (webView:decidePolicyForNavigationAction:request:frame:d