ナビゲーションバーとステータスバーの後ろにスライドするWebビューを使用するViewControllerを作成しています。これを行うために、webView.scrollView.contentInset
プロパティを64
の上部インセットを持つように設定しています。
ただし、これによってWebビューが占める領域の量が縮小されるわけではないため、ページが1画面未満の場合、スクロールするために下部に64ピクセルの空白があります。 Webビューは垂直方向のUIPageViewController
にあるため、ページングが中断されます。この余分なスペースを取り除く方法はありますか?
短いページのスクロールを無効にすることで、この問題を回避するためのエンドランを作成しました。基本的に、私は-stringByEvaluatingJavaScriptFromString:
を使用して、document.body
から下に移動し、最下部の要素の下部の位置を計算するページ内でJavaScriptを実行します。 (document.body
自体は常に少なくともビューポートと同じ大きさなので、そのサイズを確認することはできません。)次に、Objective-C-landに戻って、それをWebビューの高さと比較します(挿入図)、それより少ない場合は、スクロールを無効にします。これは完璧な解決策ではありませんが、最悪の症状をカバーします。
誰かがこれよりも良い解決策を思い付くことができれば、私はそれについて聞いてみたいです!いずれにせよ、私は自分に賞金を与えることができないので、誰かがそれを手に入れるでしょう。
Webビューのスクロールビューコンテンツのインセットを調整するようなことを試しましたか?例:
webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0,64, 0)
webView.scrollView.contentSize
を調整し、高さを64ずつ調整する必要があるようです。これに答えるには、ナビゲーションバーとステータスバーの後ろにスライドする方法に関する詳細情報を提供する必要がある場合があります。 ScrollViewプログラミングガイドのこのセクションを見てみましょう。
ClipsToBoundsを変更します。
webView.clipsToBounds = NO;
これにより、コンテンツがフレームの外側に表示されるため、ナビゲーションバーのすぐ下で通常のようにフレームを設定します。ナビゲーションバーは半透明になり、その下にコンテンツが表示されます。
Webビューの自動レイアウトを無効にすることを忘れないでください!