前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【iOS开发】伪造一个 SFSafariViewController

【iOS开发】伪造一个 SFSafariViewController

作者头像
KyXu
发布2019-04-11 16:34:11
1.1K0
发布2019-04-11 16:34:11
举报
文章被收录于专栏:KyXuKyXu

iOS 9 中的 SFSafariViewController 可以使我们非常方便的传入一个 url 来展示一个网页,调用起来是下面这样:

代码语言:javascript
复制
let safari = SFSafariViewController(URL: url)
self.presentViewController(safari, animated: true, completion: nil)

这里我尝试给出一个简化版(仅仅展示网页,没有其他功能)的 SFSafariViewController,来方便地在 iOS 9 以下的系统中调用。

代码语言:javascript
复制
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 是一样的:

代码语言:javascript
复制
let realSafari = SFSafariViewController(URL: url)
let fakeSafari = FakeSafariViewController(URL: url)

当然,如果如果你要在 iOS 8 以下的环境中使用的话,把 WKWebView 换成 UIWebView 就好了。


【Github】这段代码出现在了 SwiftGG 项目

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.03.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档