質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3702閲覧

webViewとナビゲーションバーの間に余分な余白が発生してしまう

poemt

総合スコア48

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/09/15 01:57

編集2017/09/15 02:13

いつもお世話になっております。

掲題のことで質問させてください。

WKWebViewを使ってブラウザのように表示したいのですが、
シミュレータを用いて確認してみると、iPhone7ではうまく表示されるのですが7Plus、iPad Air2などで確認するとナビゲーションバーとwebviewの間で余白が発生してしまいます。
iPhone5sにいたっては逆に余白どころかwebviewのframeのy座標が画面上より上になっている始末です。

こちらの方でも調べた結果、対象のViewControllerのInterface BuilderのところでAdjust Scroll View Insetsのチェックをはずすと余白が発生しなくなる、ということがわかりチェックをはずしてみたのですが、余白は消えませんでした。

webviewのframeのy座標を変えてもある端末ではうまく表示されても他の端末では失敗してしまうため根本の解決にはなりませんでした。

どの端末でも余白がなくなるような対処方法をご存知の方がいらっしゃいましたら、ご教示のほどよろしくお願いします。

追記:
webViewの生成時のコードになります。

Swift

1class Browser:WKUIDelegate, WKNavigationDelegate { 2 var browser:WKWebView! 3 4 override func viewDidLoad() { 5 super.viewDidLoad() 6 self.browser = WKWebView(frame:CGPoint.zero) 7 self.browser.navigationDeligate = self 8 self.view.addSubview(self.browser) 9 } 10 11 //ここでwebviewをリサイズする 12 override func viewDidLayoutSubviews() { 13 self.browser.frame = CGRect(origin: CGPoint.xero, size: self.view.frame.size) 14 } 15 16}

環境:
swift3, Xcode8.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/09/15 02:00

WebViewはどうやって配置しているのでしょうか?コードなり制約なりを書いて下さい。
fuzzball

2017/09/15 02:48

コードは手で打たずにコピペして下さい。現在のコードはエラーが多数発生します。で、エラーを適当に修正して試してみましたが、こちらでは余白が空くような症状は発生しませんでした。とりあえず、viewDidLayoutSubviewsにsuper.viewDidLayoutSubviews()を追加するのと、frame設定後にprint(self.browser.frame)を追加して出力を教えて下さい。
fuzzball

2017/09/15 05:42 編集

WebViewをStoryboard上で配置するという選択肢はないのでしょうか?あと、これはUniversalアプリですか?
fromageblanc

2017/09/15 05:54

WKWebViewはたしかストボー使えなかったかと。
poemt

2017/09/15 06:13

申し訳ありません。コードについてはコピペができる状態ではありませんでした。手打ちのせいでエラーのでるコードになってしまいすみませんでした・・・。wkwebviewはstoryboardからは配置できないようです。アプリについてはUniversalアプリです。
fuzzball

2017/09/15 06:25

fromageblancさん、お久しぶりな気がw WKWebView無いんですね‥。Xcode9では使えるようなので移行するか、Xcode8のままでやるとすれば、(a)コードで制約付ける。(b)ダミーのViewに制約を付けて、コード側でダミーViewの上にWKWebViewを乗せる。などでしょうか。ちょっとUniversalアプリにして試してみます。
guest

回答1

0

自己解決

自己解決というか、上司に見てもらった結果なのですが、
別でこのViewControllerを入れるContainerがあり、そちらに何の制約も付けられていなかったことが原因だったようです。
そのため、webViewとしては問題なかったがその下地のContainerがでたらめに配置されてしまい余白やy座標が画面外に存在するということになってしまっていたようでした。
お騒がせしてしまい申し訳ありませんでした。また、解明にお時間を割いていただきありがとうございました。

投稿2017/09/15 06:17

poemt

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問