独創アプリ開発日記 55日目 Web全面表示

今日はプログレスバーを表示する予定だったのですが、その前に下準備を行いました。

まずは将来的に手軽に画面遷移出来るよう、AppDelegate.swiftを編集してナビゲーションコントローラを追加しました。


class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var _navC: UINavigationController?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        // ナビコントローラ作成
        _navC = UINavigationController(rootViewController: ViewController())
        _navC?.isNavigationBarHidden = true
        // windowを生成
        self.window = UIWindow(frame: UIScreen.main.bounds)
        // rootViewControllerにナビコントローラを指定
        self.window?.rootViewController = _navC
        // windowを表示
        self.window?.makeKeyAndVisible()
        return true
    }
・・・

次に、時計やバッテリーを非表示にしてフル全面Web表示にしました。iPhoneXの場合、標準で凹んでいる部分は除外してViewを表示するような作りになっているようです。

iPhoneXの場合は凹んだ部分にもWebを表示するよう、以下のようにViewController.swiftを編集しました。


import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    private var _webView : WKWebView!
    private var _hideStatusBar : Bool = false
    
    func iPhoneX() -> Bool {
        guard #available(iOS 11.0, *) else {
            return false
        }
        return UIApplication.shared.windows[0].safeAreaInsets != UIEdgeInsets.zero
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        // ステータスバーの高さを取得
        let statusBarHeight = iPhoneX() ? UIApplication.shared.statusBarFrame.size.height : 0
        // WKWebViewを位置指定して表示
        _webView = WKWebView(frame:CGRect(x:0, y: -statusBarHeight, width:self.view.bounds.size.width, height:self.view.bounds.size.height + statusBarHeight))
        // ジェスチャー(フリック)による 進む や 戻る を許可
        _webView.allowsBackForwardNavigationGestures = true
        // テキスト漫画読み込み
        let url : URL = URL(string: "https://minnano.app/textmanga/")!
        let request : URLRequest = URLRequest(url: url)
        _webView.load(request)
        // 表示
        self.view.addSubview(_webView)
        // ステータスバーの非表示 ※ステータスバーの高さを取得する前に非表示にすると、ステータスバーの高さが取得できない
        _hideStatusBar = true
        self.setNeedsStatusBarAppearanceUpdate()
    }
    
    override var prefersStatusBarHidden: Bool {
        return _hideStatusBar
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

以上で、iPhoneXの凹んでいる部分も含めて、完全全面Web表示になりました。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です