iOS9から登場したSFSafariViewControllerを試してみました。
SFSafariViewControllerはWebページを表示できるControllerで、UIWebViewと違って標準で前へボタンや次へボタンが付いているので手軽にページを表示したい時に重宝しそうです。
使い方
SafariServicesをimportしてSFSafariViewControllerを通常のcontrollerのようにpresentするだけで完了です。
import UIKit import SafariServices class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { let vc = SFSafariViewController(URL: NSURL(string: "https://google.co.jp")!) presentViewController(vc, animated: true, completion: nil) } }
起動したら次へ・戻るボタンなどが付いたビューが表示されました。
SFSafariViewControllerDelegateには3つのメソッドがあります。
class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { let vc = SFSafariViewController(URL: NSURL(string: "https://google.co.jp")!) vc.delegate = self presentViewController(vc, animated: true, completion: nil) } } extension ViewController: SFSafariViewControllerDelegate { func safariViewController(controller: SFSafariViewController, activityItemsForURL URL: NSURL, title: String?) -> [UIActivity] { return [UIActivity()] } func safariViewControllerDidFinish(controller: SFSafariViewController) { print("safariViewControllerDidFinish:") } func safariViewController(controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool) { print("safariViewController:didCompleteInitialLoad:") } }
safariViewController:didCompleteInitialLoad:
は最初の読み込みが完了した時に呼ばれるメソッドです。
safariViewControllerDidFinish:
はユーザーが左上の完了ボタンを押下した時に呼ばれます。
safariViewController:activityItemsForURL:
は利用するUIActivityを選択できるものです。