我正在加载本地html文件,因为iOS7在UIWebView的顶部添加了空白区域。(我无法发布图像,因为我没有足够的点数。) image can be seen here- snap shot from iPhone simulator, uiwebview surrounded by black frame, the html content is grey, but there is white added above it
我尝试使用
调整缩放[webView stringByEvaluatingJavaScriptFromString:@"document. body.style.zoom = 5.0;"];
webView.scalesPageToFit = NO;
我也尝试删除白色间距:
NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
[webView stringByEvaluatingJavaScriptFromString:padding];
仍然没有运气。在桌面Chrome浏览器中没有空格。 html文件是Google Swiffy文件 - 包含html和JSON。
答案 0 :(得分:142)
在ViewDidLoad中尝试 self.automaticallyAdjustsScrollViewInsets = NO; 。
ios 7为滚动视图自动添加64px。 (状态栏和导航栏)
答案 1 :(得分:5)
如果它是父视图的第一个子视图,则此问题仅影响UIWebView
。解决此问题的另一种方法是将另一个不可见的空视图添加到父视图作为第一个视图。在Interface Builder中添加零大小的子视图,并使用Editor-> Arrange-> Send to Back菜单命令。
如果您不使用Interface Builder,而是继承UIWebView
,那么可以通过创建名为scrollFixView的UIView
实例变量并覆盖以下方法来完成:
- (void)didMoveToSuperview
{
[super didMoveToSuperview];
if ([self superview].subviews.firstObject == self) {
_scrollFixView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
_scrollFixView.hidden = YES;
[[self superview] insertSubview:_scrollFixView belowSubview:self];
}
}
- (void)removeFromSuperview
{
if (_scrollFixView) {
[_scrollFixView removeFromSuperview];
_scrollFixView = nil;
}
[super removeFromSuperview];
}
答案 2 :(得分:3)
我遇到了同样的问题所以我尝试了一些事情: - )
这对我有用,但如果有更好的方法,请纠正我。
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
if(self.navigationController.navigationBar.translucent == YES)
{
_webView.scrollView.contentOffset = CGPointMake(_webView.frame.origin.x, _webView.frame.origin.y - 54);
}
}
所以基本上你需要:
1)添加UIWebView委托方法 - webViewDidFinishLoad: 2)然后我设置一个if语句来检查半透明选项是否有效。
如果您在应用中为用户提供选项,那么您只需要做最后一个。
_webView.frame.origin.y
之后的数字仅适用于我的应用。它可能会有所不同。
答案 3 :(得分:1)
我通过简单地在WebView上设置约束来解决这个问题,将它和View top之间的顶部空间设置为0,导致NavBar与空白重叠。
答案 4 :(得分:0)
Jeff Kranenburg方法的一个替代方法是子类化并覆盖UIWebView
子类' UIScrollViewDelegate
方法scrollViewDidScroll:
。这仅适用于您的子类的滚动关闭。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ([[self superclass] instancesRespondToSelector:_cmd]) {
[super scrollViewDidScroll:scrollView];
}
[self fixUpScrollViewContentOffset];
}
- (void)fixUpScrollViewContentOffset
{
if (!CGPointEqualToPoint(self.scrollView.contentOffset, CGPointZero)) {
self.scrollView.contentOffset = CGPointZero;
}
}
答案 5 :(得分:0)
我已经知道了。
这里是我的逻辑代码,当应用程序打开网站时,您必须获得webview的大小,然后将其设置为高度
这里是我的代码
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webpage.getLayoutParams();
p.height = webpage.getHeight();
// check if how long you need to set your height for webpage then set it :)
Log.e(" webpage.getHeight()", String.valueOf(webpage.getHeight()));
webpage.setLayoutParams(p);
希望你能把我的代码和我的答案:)用于任何设备甚至标签:)