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