Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > SFSafariViewController

SFSafariViewControllerとUIWebViewの違い

先日ブラウザを調査していると見かけた事の無いコントロールSFSafariViewControllerというものに出会いました。ios9からのコントロールで既に多くのレビューがあるのですが改めて調査してみます。 UIwebviewやwkwebviewと同等のビューなのか、何が違うのか検証してみました。

サンプル画像

参考:iOS 9の新しいWebビュー: SFSafariViewController
参考:[iOS 9] SFSafariViewController の概要
参考:SFSafariViewControllerを試す
参考:iOS 9: Getting Started With SFSafariViewController
参考:SFSafariViewController Apple

やってみた

どうやら制約はありそうですが、単純にウェブを表示するだけであれば短く記載できるようなので、ちょっと比較してみます。 (import SafariServices を忘れずに!)


import UIKit
import SafariServices

class ViewController: UIViewController {
    
    override func viewDidAppear(animated: Bool) {
        if #available(iOS 9.0, *) { // <- ios9以上しか使えない
            let svc = SFSafariViewController(URL: NSURL(string: "http://swift-salaryman.com/")!)
            self.presentViewController(svc, animated: true, completion: nil)
        }
    }
}

実質必要なのは3行程度でしょうか。UIWebViewだと表示領域等の設定やDelegateを引っ付ける必要があるので便利ではありますね!Shareのボタンがフッタに ついていたりNextやForward、あとは本来のSafariで起動するボタンも右下についているようです。

あと広告関連でクリックしても従来のwebviewだとクッキーをサファリから同期していませんでしたー例えば楽天アフィリエイトをクリックしても証拠を残せない。これは楽です!今まではuiwebviewがアクセスするhttpをキャッチしてsafariブラウザに飛ばしていたので、その一連の作業が無くなります。

まとめ

UIwebviewの様に見た目をカスタマイズする事はできませんが、利用メリットはコーディングの量が少なくなるメリットだけでもios9以降であれば利用しても良いのかなと思いました。ただ、古いアプリなんかを更新したい場合、osの互換性なんかも考慮しないといけず面倒なのは変わらないですね。 新しいアプリ作成にはオススメです!

↓こんな記事もありますよ!

カスタムクラスを作成時いつも忘れる。継承クラス作成時のメモ

カスタムクラスを作成する時いつもUIViewを継承する際のrequired Initの箇所でハマってしまうので覚書です。

UINavigationController

TabBarとUITableViewControllerを利用して一つのUIViewControllerだけをクリックすると右にスライドするUINavigationControlerを 利用したサンプルを記載します。というのも、AppDelegate内でUINavigationをself.windowのrootviewcontrollerにセットする 方法は多々あったのですが、AppDelegate内を利用しないでNavigationを実装する方法がなくハマっていましたのでを以下記載します

WatchKitでタイマーアプリを作成する。

簡単なアプリを作成しながらAppleWatchを学んでいきます。前回の記事で大まかな動きは理解できましたので、 つぎはAppleWatchとアプリとの連携をタイマー機能を利用して検証していきます
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!