如何在 iOS 中垂直和水平居中 webview 的内容?

Posted

技术标签:

【中文标题】如何在 iOS 中垂直和水平居中 webview 的内容?【英文标题】:How do I center the contents of a webview in iOS vertically and horizontally? 【发布时间】:2013-05-24 18:37:28 【问题描述】:

我用谷歌搜索了很多,但似乎找不到任何对我有意义的东西。我需要将 webview 的内容垂直和水平居中。我已经能够得到水平来处理这个:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
    NSString *bodyStyle = @"document.getElementsByTagName('body')[0].style.textAlign = 'center';";
    [self.webView stringByEvaluatingjavascriptFromString:bodyStyle];

但我在垂直方向上找不到任何东西。有任何想法吗?任何帮助将不胜感激。

【问题讨论】:

我很喜欢垂直居中的这句话:在 CSS 中垂直居中的最简单方法是合上笔记本电脑并转到栏。 【参考方案1】:

将所有内容保存在 table 中,然后对齐表格单元格。

CSS

td 
    text-align: center;
    vertical-align: middle;

<table border="1">
    <tr>
        <td align="center" valign="middle">Text</td>
        <td align="center" valign="middle">Text</td>
    </tr>
</table>

【讨论】:

我使用了这个解决方案,但需要添加&lt;body style="margin:0;width:100%;height:100%;"&gt; &lt;table height="100%"&gt; 以确保表格垂直适合webview框架【参考方案2】:

垂直居中:

CGSize contentSize = webView.scrollView.contentSize;
CGFloat d = contentSize.height/2 - webView.center.y;
[webView.scrollView setContentOffset:CGPointMake(0, d) animated:NO];

【讨论】:

【参考方案3】:

这样试试,

NSString *bodyStyleVertical = @"document.getElementsByTagName('body')[0].style.verticalAlign = 'middle';";
NSString *bodyStyleHorizontal = @"document.getElementsByTagName('body')[0].style.textAlign = 'center';";
NSString *mapStyle = @"document.getElementById('mapid').style.margin = 'auto';";

[webView stringByEvaluatingJavaScriptFromString:bodyStyleVertical];
[webView stringByEvaluatingJavaScriptFromString:bodyStyleHorizontal];
[webView stringByEvaluatingJavaScriptFromString:mapStyle];

希望对你有帮助.....

【讨论】:

感谢代码,第一次使用它仍然只是水平居中。我今天会弄乱它,看看我能不能让它工作。再次感谢。 这个最接近我,虽然我还没有完全解决这个问题。

以上是关于如何在 iOS 中垂直和水平居中 webview 的内容?的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序 view文字水平垂直居中

在水平堆栈视图(自动布局)中将文本与图像垂直居中 - iOS

如何让DIV里面的DIV水平垂直居中

HTML元素水平垂直居中实现方式(每天一个知识点)

如何使文字在div中水平和垂直居中的css代码

我如何在乳胶中垂直和水平居中报价?