【问题标题】:UIWebView contentInset without extra height at bottomUIWebView contentInset 底部没有额外的高度
【发布时间】:2013-06-25 21:17:33
【问题描述】:

我正在创建一个视图控制器,它使用在导航栏和状态栏后面滑动的 Web 视图。为此,我将webView.scrollView.contentInset 属性设置为顶部插入64

但是,这并不会缩小 Web 视图想要占用的区域量,因此如果页面小于一屏,则它的底部有 64 像素的空白区域可供滚动浏览。 Web 视图是垂直的UIPageViewController,所以这会破坏分页。有什么办法可以摆脱这个多余的空间吗?

【问题讨论】:

  • 您希望网页视图内容位于导航栏和状态栏后面吗?还是导航栏随着状态栏后面的网络视图滚动?
  • 当你滚动网页视图时,我希望它滑到半透明的导航栏和状态栏后面。 (我实际上是在 iOS 7 上执行此操作的,因此它是新奇的模糊导航栏之一,但 UIWebView 滚动完成的方式似乎并没有改变。)我之前已经实现了滚动行为,但是这不是我要在此应用中寻找的内容。
  • 哦。我想我知道你想要什么,它不是 contentInset,因为它会移动 web 视图的内容。如果您希望 Web 视图显示在导航栏和其他内容的后面,请将 clipsToBounds 设置为 NO
  • 您能否将其归结为一个显示问题的简单示例项目?这将使修复它变得容易得多。

标签: ios cocoa-touch uiwebview uiscrollview


【解决方案1】:

听起来您需要调整webView.scrollView.contentSize 并将高度调整64。您可能需要提供有关它如何在导航栏和状态栏后面滑动的更多信息以帮助我回答这个问题。我会看一下滚动视图编程指南的这一部分:

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/CreatingBasicScrollViews/CreatingBasicScrollViews.html

【讨论】:

  • 查看我对这个问题的评论,了解更多关于我在做什么的细节。我假设 contentSize 只有在页面小于全屏高度时才应该更改,对吧?我将如何确定?
  • 当您的 WebView 加载时,contentSize 可能会告诉您内容的高度。听起来您还需要设置 contentInset.bottom = 64。
【解决方案2】:

更改 clipsToBounds。

webView.clipsToBounds = NO;

这将使其内容在其框架之外可见,因此将其框架设置为正常,就在导航栏的正下方。导航栏将是半透明的,您将在其下方看到其内容。

【讨论】:

  • 不幸的是,这在这种情况下不起作用,因为它们位于 UIPageViewController 中。一个控制器中的 Web 视图溢出其边缘并最终与它上方和下方的控制器重叠,显然会干扰页面控制器的手势识别器。
  • 它不应该,它不允许在你现在可以看到的地方进行触摸,只是显示它。而且我从未尝试过页面控制器,所以我不知道,我认为这会起作用。
  • 另一种方法可能是将您的视图控制器设置为需要全屏布局......然后从那里开始。 UIViewController 在它管理的一个或多个视图上设置clipsToBounds=YES...我不记得设置viewController.wantsFullScreenLayout=YES 是否解决了这个问题。
【解决方案3】:

我通过在短页面上禁用滚动来解决这个问题。基本上,我使用-stringByEvaluatingJavaScriptFromString: 在从document.body 向下走的页面内运行一些JavaScript,并计算最底部元素底部的位置。 (document.body 本身总是至少和视口一样大,所以我看不到它的大小。)然后,回到 Objective-C-land,我将它与 web 视图的高度进行比较(减去插图),如果它更少,我禁用滚动。这不是一个完美的解决方案,但它涵盖了最严重的症状。

如果有人能提出比这更好的解决方案,我很想听听!无论哪种方式,我都无法将赏金奖励给自己,所以有人会得到它。

【讨论】:

  • 老实说,我认为这不应该被标记为正确答案,因为有更好的选择,比如 Chris Truman 提供的选择。使用 JavaScript 检查最底部元素的位置是不好的。
【解决方案4】:

不要忘记禁用 Web 视图的自动布局!

【讨论】:

    【解决方案5】:

    您是否尝试过调整 webview 的滚动视图内容插图之类的方法?示例:

        webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0,64, 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-24
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多