23. Juli 2019

Browser einbetten in iOS Apps

Mit SFSafariViewController

Am einfachsten gestaltet sich die Verwendung von SFSafariViewController, mit dem ein kompletter Browser eingebettet werden kann:

func showSafari() {
    let url = URL(string: "https://duckduckgo.com/")!
    let controller = SFSafariViewController(url: url)
    self.present(controller, animated: true, completion: nil)
}

Die Darstellung ist nicht groß anpassbar und schaut immer genau so aus - die Buttons wie Share, Reader etc. lassen sich nicht anpassen:

SFSafariViewController

Mit WKWebView

Mehr Spielraum zur Anpassung erlaubt WKWebView. Diese Klasse existiert seit iOS 8 und ersetzt die alte UIKit-Klasse UIWebView. Da dieses View auch über Initializer-Parameter konfiguriert wird und es einige Probleme bei der Verwendung im Storyboard gibt (Fehlendes Framework, Probleme mit Layout Constraints), empfiehlt sich die Benutzung eher programmatisch z.B. in UIViewController#loadView um einen Full-Screen-Browser zu erzeugen:

class WebViewController: UIViewController {

    var webView: WKWebView!

    override func loadView() {
        self.webView = WKWebView()
        self.view = self.webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.webView.load(URLRequest(url: URL(string: "https://www.duckduckgo.com/")!))
    }

}