iOS 9 中的 SFSafariViewController 可以使我们非常方便的传入一个 url 来展示一个网页,调用起来是下面这样:
let safari = SFSafariViewController(URL: url)
self.presentViewController(safari, animated: true, completion: nil)
这里我尝试给出一个简化版(仅仅展示网页,没有其他功能)的 SFSafariViewController,来方便地在 iOS 9 以下的系统中调用。
import UIKit
import WebKit
// 如果用户使用 iOS 8,则没有 SFSafariViewController,用这个 VC 来加载一个网页
class FakeSafariViewController: UIViewController {
var url:NSURL!
let webview = WKWebView()
// MARK: - Init
convenience init (URL: NSURL) {
self.init()
self.url = URL
}
// MARK: - Main
override func viewDidLoad() {
super.viewDidLoad()
// webview
webview.frame = self.view.frame
webview.loadRequest(NSURLRequest(URL: url))
view.addSubview(webview)
// 屏幕旋转监听
NSNotificationCenter.defaultCenter().addObserver(self, selector: "screenRotate:",
name: UIDeviceOrientationDidChangeNotification, object: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func screenRotate(notification:NSNotification) {
webview.frame = self.view.frame
}
}
调用时,表现起来和 SFSafariViewController 是一样的:
let realSafari = SFSafariViewController(URL: url)
let fakeSafari = FakeSafariViewController(URL: url)
当然,如果如果你要在 iOS 8 以下的环境中使用的话,把 WKWebView 换成 UIWebView 就好了。
【Github】这段代码出现在了 SwiftGG 项目