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の internalを使用しUIScrollViewます。コンテンツのサイズはスクロール ビューから取得され、Web ビュー全体から取得されます。これにより、「余分な」スペースが得られます。これを半分にして上部のインセットとして使用すると、中央に配置されます. setContentOffset:これは、インセットを設定する前に内部で設定されているように見えるため、最初に自分でビューを正しい場所にスクロールする必要があります。それ以降は、すべてが機能するはずです。

dispatch_after残念ながら iOS 8 では が必須contentSizeです。webViewDidFinishLoad:

于 2014-12-12T12:48:17.487 に答える
1

iOSの経験はありませんが、コンテンツをHTMLで垂直方向に中央揃えにする方法はさまざまです。

1つは、コンテンツをテーブルにラップすることです。

<style>
  html, body, table {
    height: 100%;
  }
  table {
    width: 100%;
  }
  td {
    text-align: center;
    vertical-align: middle;
  }
</style>
<table>
  <tr>
    <td>
      <object .../>
    </td>
  </tr>
</table>

もう1つは、コンテンツを既にラップしている要素にテーブルのようなスタイルを適用することです。

<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 に答える