今日はプログレスバーを表示する予定だったのですが、その前に下準備を行いました。
まずは将来的に手軽に画面遷移出来るよう、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表示になりました。