透明UINavigationBar下的UIWebView

Jon*_*ing 6 iphone cocoa-touch objective-c

我有一个UIWebView,我想把它放在半透明的UINavigationBar下面.通常,当我将UIScrollView置于半透明的UINavigationBar下时,我设置了它的contentOffset,以便所有内容最初都会在条形图之后被推送,以便可以看到它; 此后,用户可以滚动文本,它将重叠条.

问题是UIWebView似乎不是UIScrollView的合适子类; 因此,我不能使用setContentOffset.有没有人有任何提示或技巧让UIWebView看起来很好用半透明的导航栏?谢谢.

zer*_*mpl 9

从iOS 5开始,您可以使用UIWebView的scrollView属性,并设置contentInset来调整位置.

CGFloat top = 0.0;

if( self.navigationController != nil && self.navigationController.navigationBar.translucent ) {
    top = self.navigationController.navigationBar.bounds.size.height;
}

UIWebView* wv = ...

wv.scrollView.contentInset = UIEdgeInsetsMake(top, 0.0, 0.0, 0.0);
Run Code Online (Sandbox Code Playgroud)


con*_*are 0

我不确定是否有一种干净的方法可以做到这一点。我没有尝试过,但这里有一个想法:

  1. 在原点 0,0 处绘制 uiwebview
  2. 拦截所有屏幕触摸
  3. 如果您检测到用户向上拖动(向上滚动网页视图),请不要传递触摸
  4. 相反,将 webview 向上移动 x 像素,使其原点为 (0,-x)。然后更改高度以添加 x 像素
  5. 您需要保持某种状态,以便知道何时停止调整 Web 视图大小并开始传递触摸,以便 Web 视图滚动。

取回它是一样的,只是你通过向下拖动(向下滚动网络视图)来完成它。