- 更新日: 2015年12月18日
- Swift & iOS
WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
iOS/Swift 開発で WKWebView を使って WebView を表示させていたのですが、画面上部の Navigation Bar に重なってウェブページのヘッダー部が隠れてしまっていました。WebView でこれを回避して、ウェブページのヘッダー部を NavigationBar に重ならせずに表示する方法。
— 環境 —
Xcode 7.0
Swift 2.0
Mac OS X Yosemite 10.10.5
WKWebView を使う WebView 画面のコード
WKWebView を使う WebView コントローラーのコードは以下のようなもの。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import WebKit class ExampleWebViewController: UIViewController, WKUIDelegate { override func viewDidLoad() { super.viewDidLoad() // set WKWebView let webView: WKWebView! = WKWebView() webView.UIDelegate = self self.view.addSubview(webView) webView.frame = self.view.bounds // request and load url let urlString = "http://example.com" let encodedUrlString = urlString.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet() ) let url = NSURL(string: encodedUrlString!) let request = NSURLRequest(URL: url!) webView.loadRequest(request) } // ... } |
このままですと、WebView ページを表示させた時に、ウェブページのヘッダー部が NavigationBar の下に潜り込んで隠れてしまっていた。
Storyboard で Extend Edges の Under Top Bars のチェックを外す
WebView ページを表示時に、ウェブページのヘッダー部が NavigationBar に重ならないようにするには、Storyboard の設定で Extend Edges の Under Top Bars のチェックを外すと良い。
1. Xcode で Storyboard を表示させて該当のコントローラー(今回の例では ExampleWebViewController)を選択します。
2. Attributes Inspector を開く。
3. View Controller の Extend Edges にある項目「Unser Top Bars」のチェックを外します。
以上の作業を行った後に再ビルド。これで WebView ページを表示させた時に、ウェブページのヘッダー部が Navigation Bar の下に潜り込んで隠れるのを防ぐことができました。
- Swift & iOS の関連記事
- WKWebView/UIWebViewでウェブページが真っ白
- Unityのインストールと初期設定
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
- WKWebViewでtarget=”_blank”のリンクを開く(Swift)
Leave Your Message!