- 當(dāng)然,如題所言,這是一個(gè)簡單的問題,但是我在做的時(shí)候不是一下子就做出來的,有可能LZ比較笨的類型吧。我覺得超過5分鐘沒解決的問題都應(yīng)該記錄一下。故本篇以問題的形式來做描述。
-
1.直接加載到 UIWebView上會直接覆蓋在上面而不是你想要的在頂部。像這樣:
直接加載會覆蓋在上面
解決辦法:
1.頭視圖的frame的y坐標(biāo)做調(diào)整
2.webView設(shè)置contentInset
如我這樣設(shè)置頭視圖的frame:
self.frame = CGRectMake(0, -300, [UIScreen mainScreen].bounds.size.width, 300);
這樣設(shè)置webView的contentInset:
_webView.scrollView.contentInset = UIEdgeInsetsMake(300, 0, 0, 0);
這樣就解決了覆蓋在頂部的問題:
解決了覆蓋在頂部的問題 -
2.然后問題又來了,如果由于網(wǎng)絡(luò)原因或者其他原因webView加載不出來的話就會出現(xiàn) 頂部視圖出現(xiàn)在頂部視圖外面,webView下面顯示黑色的問題:
頂部視圖顯示在屏幕外面了,下面是黑色了
解決辦法:因?yàn)閣ebView有一個(gè)scrollView的屬性,所以一切有關(guān)滑動的我們都可以用UIScrollView的習(xí)性來處理它
1.設(shè)置webView起始時(shí)的偏移量contentOffset
_webView.scrollView.contentOffset = CGPointMake(0, -300);
2.設(shè)置是否透明屬性來去掉黑色
_webView.opaque = NO; - 3.這里我遇到過一個(gè)問題是webView會橫向左右小幅度滑動,但是我不希望它左右滑動,我的解決辦法是:
- 遵守UIScrollViewDelegate代理
_webView.sceollView.delegate = self;
2.實(shí)現(xiàn)代理方法,當(dāng)它滑動有偏移量時(shí)立刻使它偏移量歸零
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGPoint point = scrollView.contentOffset;
if (point.x > 0) {
scrollView.contentOffset = CGPointMake(0, point.y);
}
}
-
到這里就結(jié)束了,效果圖。
效果圖