描述
我的应用里同时使用了 TabBar 和 Navigation Bar,由于原本的 TabBar 不能满足我的外观效果要求,我用自定义的 view 实现了一个 TabBar 的外观,隐藏了原本的 TabBar,切换视图的功能还是调用原来 TabBar 的接口。不知道是不是因为自定义TabBar的原因,当通过导航控制器进入第二个视图,并在第二个视图中隐藏TabBar时会出现一些问题,我的第二个视图是一个WebView,打开一个网页,如果网页加载较慢或者未加载到内容时,底部原来的TabBar位置是一块黑色区域,感觉上是那块区域没有被WebView利用到。如果页面加载成功那个黑色区域就会被WebView利用到。
原因
我猜想,可能是因为隐藏TabBar后,WebView并没有及时重新绘制视图,只有当其加载页面完成后才去更新。因此我的解决方案是做了一个空白的html页面(html结构完整,只是body为空白)放到工程中,WebView在加载在线数据之前先加载本地的空白html页面,在线数据加载失败时也加载一次空白html页面,这就相当于我们主动要求WebView去重新绘制视图。不知道我的猜想是否正确,不过用这个方案确实完美解决了黑边的问题。
主要代码
空白html页面内容,文件名为load_error.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"