しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SFSafariViewControllerで簡単にWebページを表示する

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)
    }
}

起動したら次へ・戻るボタンなどが付いたビューが表示されました。

f:id:llcc:20160112224548p:plain

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を選択できるものです。