2

这是我的 PDF 现在加载到 : 时的样子UIWebView:(我将蓝色渐变作为UIWebView的背景,以便您可以更好地理解我的意思)。

嗨 StackOverflow!

我想将其居中,以使下边距与上边距相同。我将如何使用 PDF(非本地)执行此操作?

4

2 回答 2

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's internal UIScrollView。内容大小是从滚动视图中获取的,并且是从整个 Web 视图中获取的。这提供了“额外”空间。将其减半并将其用作顶部插图,然后将其居中。您确实需要首先将视图滚动到自己使用的正确位置,setContentOffset:因为这似乎是在我们设法设置插图之前在内部设置的。从那时起,一切都应该工作。

不幸的是,这dispatch_after是 iOS 8 中的一个要求。contentSize如果你在webViewDidFinishLoad:.

于 2014-12-12T12:48:17.487 回答
1

我没有使用 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 .../>
于 2013-01-13T22:28:08.207 回答