【iOS开发】伪造一个 SFSafariViewController

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 项目

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • 乐跑(2017.3.3) 筷子兄弟老男孩,水木年华在他乡。 奔向公园听旧歌,跑完回家找食粮。 降龙大挪移(2017...
    最家游阅读 296评论 5 14
  • 今天一定胖好多orz 简直有毒!吃饭真的有毒的! 我要深夜发图到微博伤害群众,一定要记得这件事 P.S短期内不想吃...
    dd6068917588阅读 415评论 0 0
  • 最近的工作尤其繁重,每天都是星期一,每天都有做不完的工作,其实工作倒是其次,再忙也有理清、理顺的时候,只是人际关系...
    孟夏先生阅读 332评论 0 2