在UIWebView(嵌入式移动safari)中右填充/边距无法正常工作

时间:2012-11-15 02:30:38

标签: ios css uiwebview mobile-safari padding

这是在iOS应用程序内的UIWebView中使用的。它似乎在常规Mobile Safari中工作正常,但在嵌入式浏览器中却不行。

基本上,我有一些HTML和CSS。 HTML元素周围应用了一些填充,而BODY元素则没有。我期待看到的是被空的空间包围的BODY的内容。在桌面Safari中,这可行。但由于某种原因,在Mobile Safari(嵌入式Safari)中,HTML标记的右边距被忽略,或者BODY标记被拉伸 - 不确定是哪个。请参阅这些屏幕截图以获取说明:

enter image description here Mobile Safari

注意填充似乎在Mobile Safari示例中消失了。注意:这些只是我在photoshop中模拟的图像,而不是截图,但行为是一样的。

这是代码(当然简化):

<html>
<head>
<style>
html {
    background-color: #FFF;
    padding: 10px;
}
body {
    background-color: #0F0;
}
</style>
<body>
<div> ... some stuff ... </div>
</body>
</html>

为了确保某些东西不会拉伸BODY标签的宽度,我尝试删除所有不需要的HTML和CSS,并且基本上只有一个带有绿色背景的空BODY标签,如图像所示。这仍然有同样的问题。我还尝试在BODY标记周围添加边距而不是HTML标记中的填充,这不起作用。

编辑:我也尝试将框模型设置为边框,as discussed here,但它不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

from this answer(对我有用)

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
    [webView stringByEvaluatingJavaScriptFromString:padding];
}

答案 1 :(得分:1)

事实证明,UIWebView没有使用任何维度进行初始化。它根本没有被明确初始化,例如[[UIWebView alloc] initWithFrame:....]。用适当的尺寸明确地初始化它可以解决问题。