以下是我的PDF在UIWebView
中加载时的样子:(我将UIWebView
的背景设置为蓝色渐变,这样你就可以看到我的意思了。)
我想将其置于中心位置,以使下边距与上边距相同。我如何使用PDF(非本地)?
答案 0 :(得分:2)
- (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
的内部UIScrollView
。内容大小从滚动视图中获取,并从整个Web视图中获取。这给了'额外'空间。一半,并将其用作顶部插图,并将其置于中心位置。您需要首先使用setContentOffset:
自己将视图滚动到正确的位置,因为这似乎是在我们设置插入之前在内部设置的。从那时起,一切都应该有效。
不幸的是,dispatch_after
是iOS 8中的一项要求。contentSize
如果在webViewDidFinishLoad:
之后过早提取,则{0}将为0。
答案 1 :(得分:1)
我没有使用iOS的经验,但有多种方法可以在HTML中垂直居中内容。
一个是wrap your content in a table。
<style>
html, body, table {
height: 100%;
}
table {
width: 100%;
}
td {
text-align: center;
vertical-align: middle;
}
</style>
<table>
<tr>
<td>
<object .../>
</td>
</tr>
</table>
另一个是apply table-like styles to elements that are already wrapping your content。
<style>
html, body {
height: 100%;
}
body {
display: table;
width: 100%;
}
center {
display: table-cell;
vertical-align: middle;
}
</style>
<center>
<object .../>
</center>
没有标记的解决方案是use CSS flexible boxes。
<style>
html, body {
height: 100%;
}
body {
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
}
</style>
<object .../>