SFSafariViewControllerをとりあえず使ってみた

#はじめに
SwiftでSFSafariViewControllerを使ってみました。

名前は知っていたのですが、使ったことなかったので使ってみました。
今回やってみたのは、とりあえずウェブブラウザを表示させることです。


#SFSafariViewControllerとは??
iOS9.0以降対応で、webを閲覧するための標準インタフェースを提供してくれるクラス。
Safariのいくつかの機能を備えているらしいです。（まだ勉強中なので、らしいとしました。）

#とりあえず、使おう
ウェブブラウザを表示させるだけなら、とても簡単に出来ます。

`import SafariServices`
**SafariServices**をimportして、

```swift:ViewController.swift
@IBAction func tappedSafariButton(sender: AnyObject) {
    let qiitaUrl = NSURL(string: "https://qiita.com")
        
    if let qiitaUrl = qiitaUrl {
        let safariViewController = SFSafariViewController(URL: qiitaUrl)
        presentViewController(safariViewController, animated: false, completion: nil)
    }
}
```

これだけ!
これだけでボタンを押したらSFSafariViewControllerでウェブブラウザを表示できます。
(Buttonの生成は省略しています。)

![Simulator Screen Shot 2016.08.29 22.51.09.png](https://qiita-image-store.s3.amazonaws.com/0/103695/6d6d2d0b-add8-d85d-d172-0b42e83a5cec.png)



![Simulator Screen Shot 2016.08.29 22.39.33.png](https://qiita-image-store.s3.amazonaws.com/0/103695/dcc898b7-a997-12c5-ab12-c1c09c1fcf5c.png)

簡単ですね!

#delegateも!
SFSafariViewControllerDelegateなんていうのがあるのでこちらも触ってみました。

```swift:
// SFSafariViewControllerDelegate
/*(1)*/ optional public func safariViewController(controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool)
/*(2)*/ optional public func safariViewController(controller: SFSafariViewController, activityItemsForURL URL: NSURL, title: String?) -> [UIActivity]
/*(3)*/ optional public func safariViewControllerDidFinish(controller: SFSafariViewController)
```
3つしかなかったので、とりあえず並べてみました。

(1)は、最初に表示する画面の読み込み完了時に呼ばれます。

(2)は、アクションボタンタップ時に呼ばれます。
カスタムUIActivityを追加してあげたりできます。

アクションボタンはこいつです。
<img width="44" alt="スクリーンショット 2016-08-29 23.19.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/103695/a666959b-3eec-3748-170f-828ba11ceb22.png">

(3)は、Doneボタンタップ時に呼ばれます。

とりあえず、ログを吐かせるぐらいしかしていませんが最終的にはこんな感じ。

```swift:ViewController.swift
import UIKit
import SafariServices

class ViewController: UIViewController {
// MARK: IBActions
    @IBAction func tappedSafariButton(sender: AnyObject) {
        let qiitaUrl = NSURL(string: "https://qiita.com")
        
        if let qiitaUrl = qiitaUrl {
            let safariViewController = SFSafariViewController(URL: qiitaUrl)
            safariViewController.delegate = self
            presentViewController(safariViewController, animated: false, completion: nil)
        }
    }
}

// MARK: SFSafariViewControllerDelegate
extension ViewController: SFSafariViewControllerDelegate {

    func safariViewController(controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool) {
        print("didCompleteInitialLoad")
    }

    func safariViewController(controller: SFSafariViewController, activityItemsForURL URL: NSURL, title: String?) -> [UIActivity] {
        print("activityItemsForURL")
        return [SampleActivity()] // SampleActivityはUIActivityを継承したカスタムUIActivity
    }
    
    func safariViewControllerDidFinish(controller: SFSafariViewController) {
        print("safariViewControllerDidFinish")
    }
}
```

#さいごに
SFSafariViewControllerはシンプルで使いやすかった!
ただ、対応しているのがiOS9.0以降というのが、、

今回は、ウェブブラウザ表示しかできていないので
何ができて何ができないのかもう少し勉強してみます。