这是我的 PDF 现在加载到 : 时的样子UIWebView
:(我将蓝色渐变作为UIWebView
的背景,以便您可以更好地理解我的意思)。
我想将其居中,以使下边距与上边距相同。我将如何使用 PDF(非本地)执行此操作?
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_MSEC), dispatch_get_main_queue(), ^{
CGFloat topInset = floor(([[self webView] frame].size.height - [[[self webView] scrollView] contentSize].height) / 2);
[[[self webView] scrollView] setContentInset:UIEdgeInsetsMake(topInset, 0, 0, 0)];
[[[self webView] scrollView] setContentOffset:CGPointMake(0, -topInset) animated:NO];
});
}
这使用UIWebView
's internal UIScrollView
。内容大小是从滚动视图中获取的,并且是从整个 Web 视图中获取的。这提供了“额外”空间。将其减半并将其用作顶部插图,然后将其居中。您确实需要首先将视图滚动到自己使用的正确位置,setContentOffset:
因为这似乎是在我们设法设置插图之前在内部设置的。从那时起,一切都应该工作。
不幸的是,这dispatch_after
是 iOS 8 中的一个要求。contentSize
如果你在webViewDidFinishLoad:
.
我没有使用 iOS 的经验,但是有多种方法可以在 HTML 中垂直居中内容。
一种是将您的内容包装在一个表格中。
<style>
html, body, table {
height: 100%;
}
table {
width: 100%;
}
td {
text-align: center;
vertical-align: middle;
}
</style>
<table>
<tr>
<td>
<object .../>
</td>
</tr>
</table>
<style>
html, body {
height: 100%;
}
body {
display: table;
width: 100%;
}
center {
display: table-cell;
vertical-align: middle;
}
</style>
<center>
<object .../>
</center>
没有标记的解决方案是使用 CSS 灵活框。
<style>
html, body {
height: 100%;
}
body {
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
}
</style>
<object .../>