- 当然,如题所言,这是一个简单的问题,但是我在做的时候不是一下子就做出来的,有可能LZ比较笨的类型吧。我觉得超过5分钟没解决的问题都应该记录一下。故本篇以问题的形式来做描述。
-
1.直接加载到 UIWebView上会直接覆盖在上面而不是你想要的在顶部。像这样:
解决办法:
1.头视图的frame的y坐标做调整
2.webView设置contentInset
如我这样设置头视图的frame:
self.frame = CGRectMake(0, -300, [UIScreen mainScreen].bounds.size.width, 300);
这样设置webView的contentInset:
_webView.scrollView.contentInset = UIEdgeInsetsMake(300, 0, 0, 0);
这样就解决了覆盖在顶部的问题:
-
2.然后问题又来了,如果由于网络原因或者其他原因webView加载不出来的话就会出现 顶部视图出现在顶部视图外面,webView下面显示黑色的问题:
解决办法:因为webView有一个scrollView的属性,所以一切有关滑动的我们都可以用UIScrollView的习性来处理它
1.设置webView起始时的偏移量contentOffset
_webView.scrollView.contentOffset = CGPointMake(0, -300);
2.设置是否透明属性来去掉黑色
_webView.opaque = NO; - 3.这里我遇到过一个问题是webView会横向左右小幅度滑动,但是我不希望它左右滑动,我的解决办法是:
- 遵守UIScrollViewDelegate代理
_webView.sceollView.delegate = self;
2.实现代理方法,当它滑动有偏移量时立刻使它偏移量归零
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGPoint point = scrollView.contentOffset;
if (point.x > 0) {
scrollView.contentOffset = CGPointMake(0, point.y);
}
}
-
到这里就结束了,效果图。