如何使用 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

指定 UIWebView 内容大小或位置

Mac Webview OC与JS交互实现

webView的缩放效果配置

如何更改按钮的位置。目标-c

void SendDelegateMessage(NSInvocation*): 委托 (webView:decidePolicyForNavigationAction:request:frame:d