Latest 1.3.5
Homepage https://github.com/pcjbird/QuickWebViewController
License MIT
Platforms ios 8.0, requires ARC
Dependencies SmartJSWebView, YYImage/WebP, YYWebImage, Popover.OC
Frameworks Foundation, UIKit, CoreGraphics, WebKit, JavaScriptCore, QuartzCore, MobileCoreServices, CoreSpotlight
Authors

logo
Build Status
Pod Version
Pod Platform
Pod License
CocoaPods
CocoaPods
GitHub release
GitHub release
Website

QuickWebViewController

A great & strong plugin based WebViewController. 一款基于插件的 WebView 视图控制器,您可以基于它设计您的浏览器插件,然后像积木一样来组装它们。

特性 / Features

  1. 基于插件的 WebView 视图控制器, 像积木一样自由组装插件, 为 iOS 应用提供一个强大的 H5 容器。
  2. 基础 SmartJSWebView, 支持 H5 页面通过 JavaScript 与 Native App 交互的 WebView,兼容 UIWebView 和 WKWebView。
  3. 支持扩展, 您可以基于该 WebView 视图控制器定制开发您自己的插件。
  4. 强大的基础插件支持,您几乎无需写一行代码即可运行起一个强大的 H5 容器,满足大部分应用场景:
  • QuickWebToastPlugin(toast插件) – 当页面出现错误时会以 toast 方式进行提示。
  • QuickWebProviderPlugin(provider插件) – 类似微信中的“此网页由xxx提供”。
  • QuickWebQRCodePlugin(qrcode插件) – 支持长按二维码图片进行二维码识别。
  • QuickWebSharePlugin(share插件) – 支持将页面分享到社交平台的插件。
  • QuickWebSpotlightPlugin(spotlight插件) – 支持将页面信息自动添加到 spotlight 搜索的插件。
  • QuickWebLNRefreshPlugin(LNRefresh插件) – 基于 LNRefresh 下拉刷新的插件。
  • QuickWebMJRefreshPlugin(MJRefresh插件) – 基于 MJRefresh 下拉刷新的插件。
  • QuickWebJSBridgePlugin(JSBridge插件) – 基于 JS 与 Native 交互的插件, 已实现多个 proxies, 详见 CoreProxies 和 ExtProxies 目录。

      将持续更新……

演示 / Demo

安装 / Installation

方法一:QuickWebKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'QuickWebKit'

使用 / Usage

  

  QuickWebViewController *webVC = [QuickWebViewController alloc] initWithUrlString:@"https://www.baidu.com"];
  QuickWebProviderPlugin *providerPlugin = [QuickWebProviderPlugin new];
  [webVC registerPlugin:providerPlugin];
  //...
  [self.navigationController pushViewController:webVC animated:YES];

or

  @interface BaseWebViewController : QuickWebViewController

  @end

  @implementation BaseWebViewController

  - (void)viewDidLoad {
    // register your plugins here ...
    [self registerPlugins];
    [super viewDidLoad];
  }

  -(void)registerPlugins
  {
    QuickWebProviderPlugin *providerPlugin = [QuickWebProviderPlugin new];
    [self registerPlugin:providerPlugin];
    //...
  }
  @end

  BaseWebViewController *webVC = [BaseWebViewController alloc] initWithUrlString:@"https://www.baidu.com"];
  [self.navigationController pushViewController:webVC animated:YES];

待续…

版本 / Releases

2019-04-03 V1.3.5

pcjbird released build201904030001

1.build as static library bug fixed。

2018-10-27 V1.3.4

pcjbird released build201810270001

1.try fix some crash bugs。

2018-09-29 V1.3.3

pcjbird released build201809290001

1.恢复 QuickWebLNRefreshPlugin。

2018-09-18 V1.3.2

pcjbird released build201809180001

1.XCode 10 support。

2018-08-30 V1.3.1

pcjbird released build201808300001

1.remove some build warnings。

2018-08-17 V1.3.0

pcjbird released build201808170001

1.新增导航栏按钮颜色偏好设置。

2018-06-20 V1.2.9

pcjbird released build201806200001

1.兼容ZFPlayer最新版本。

2018-04-10 V1.2.8

pcjbird released build201804100001

1.插件新增didCreateJavaScriptContext回调代理。

2018-03-26 V1.2.7

pcjbird released build201803260001

1.修改分享内容description长度限制,取消空格替换(因为英文描述会有bug)。

2018-03-21 V1.2.6

pcjbird released build201803210002

1.放弃修改弹出菜单icon图片前景色。

2018-03-21 V1.2.5

pcjbird released build201803210001

1.修复导航设置网络图片失真的问题。
2.控制设置导航标题为网络图片的显示大小。

2018-03-20 V1.2.4

pcjbird released build201803200002

1.修复设置导航title为网络图片时显示的大小问题。
2.支持项目通过YPNavigationBarTransition修改导航背景色。

2018-03-20 V1.2.3

pcjbird released build201803200001

1.修复点击导航右侧按钮没有回调的问题。
2.修复分享插件总是显示更多按钮的BUG。
3.修改导航弹出菜单样式。
4.修改导航右侧按钮顺序。

2018-03-15 V1.2.2

pcjbird released build201803150001

1.QuickWebJSBridgeContactProxy: 新增一些浏览器控制台调试日志。

2018-03-14 V1.2.1

pcjbird released build201803140003

1.新增一些浏览器控制台调试日志。

2018-03-14 V1.2.0

pcjbird released build201803140002

1.修复JS插件system proxy部分接口无法调用的问题。

2018-03-14 V1.1.9

pcjbird released build201803140001

1.修复模糊查找联系人的BUG。

2018-03-10 V1.1.8

pcjbird released build201803100002

1.新增支持自定义QuickWebJSBridgePlugin JavascriptInterface 名称以及异步回调结果Ready回调通知的javscript函数。

2018-03-10 V1.1.7

pcjbird released build201803100001

1.新增白名单功能。

2018-02-20 V1.1.6

pcjbird released build201802200001

1.修复当网页加载到一半返回,仍然显示NetworkActivityIndicator的问题。
2.修改注册和移除通知观察者函数名,防止被继承类复写,导致BUG排查困难的问题。

2018-02-02 V1.1.5

pcjbird released build201802020001

1.修改JSProxy引用头文件大小写问题。

2018-01-16 V1.1.4

pcjbird released build201801160002

1.修改QuickWebSpotlightPlugin导致crash的BUG。

2018-01-16 V1.1.3

pcjbird released build201801160001

1.修改toast样式为共享样式。

2018-01-14 V1.1.2

pcjbird released build201801140001

1.修复QuickWebSpotlightPlugin无法处理Spotlight搜索点击结果的BUG。

2018-01-10 V1.1.1

pcjbird released build201801100001

1.修复QuickWebSharePlugin无法显示导航栏右侧分享按钮的BUG。

2018-01-09 V1.1.0

pcjbird released build201801090004

1.修复QuickWebQRCodePlugin链接检测到却无法打开的BUG。

2018-01-09 V1.0.9

pcjbird released build201801090003

1.修复QuickWebQRCodePlugin手势导致不能复制网页文本的BUG。

2018-01-09 V1.0.8

pcjbird released build201801090002

1.优化QuickWebQRCodePlugin插件手势。
2.修复QuickWebQRCodePlugin本地化错误。

2018-01-09 V1.0.7

pcjbird released build201801090001

1.优化当作为navigationController的根视图时的显示问题。

2018-01-06 V1.0.6

pcjbird released build201801060001

1.修复Share插件与Spotlight插件导致Crash的问题。

2018-01-05 V1.0.5

pcjbird released build201801050001

1.修复当UINavigationBar的translucent为No时的显示问题。

2018-01-04 V1.0.4

pcjbird released build201801040001

1.新增Spotlight插件

2018-01-02 V1.0.3

pcjbird released build201801020003

1.新增LNRefresh和MJRefresh插件
2.新增是否优先使用WKWebView初始化函数

2018-01-02 V1.0.2

pcjbird released build201801020002

1.修复QuickWebProviderPlugin字体颜色的问题

2018-01-02 V1.0.1

pcjbird released build201801020001

1.修复dealloc中使用了weak导致的crash问题

2017-12-24 V1.0.0

pcjbird released build201712240001

1.首次发布SDK版本

关注我们 / Follow us

  

Twitter URL
Twitter Follow

Latest podspec

{
    "name": "QuickWebKit",
    "version": "1.3.5",
    "summary": "A great & strong plugin based WebViewController. u4e00u6b3eu57fau4e8eu63d2u4ef6u7684 WebView u89c6u56feu63a7u5236u5668uff0cu60a8u53efu4ee5u57fau4e8eu5b83u8bbeu8ba1u60a8u7684u6d4fu89c8u5668u63d2u4ef6uff0cu7136u540eu50cfu79efu6728u4e00u6837u6765u7ec4u88c5u5b83u4eecu3002",
    "description": "A great & strong plugin based WebViewController. u4e00u6b3eu57fau4e8eu63d2u4ef6u7684 WebView u89c6u56feu63a7u5236u5668uff0cu60a8u53efu4ee5u57fau4e8eu5b83u8bbeu8ba1u60a8u7684u6d4fu89c8u5668u63d2u4ef6uff0cu7136u540eu50cfu79efu6728u4e00u6837u6765u7ec4u88c5u5b83u4eecu3002u5982u679cu60a8u4ec5u60f3u4f7fu7528u5176u4e2du90e8u5206(u800cu975eu5168u90e8u63d2u4ef6)uff0cu60a8u53efu4ee5u6839u636eu9700u8981u4ec5u5b89u88c5u60a8u9700u8981u7684u529fu80fdu4e0eu63d2u4ef6uff0c u8be5u9879u76eeu652fu6301 Cocoapods u7684 subspecu3002",
    "homepage": "https://github.com/pcjbird/QuickWebViewController",
    "license": "MIT",
    "authors": {
        "pcjbird": "[email protected]"
    },
    "source": {
        "git": "https://github.com/pcjbird/QuickWebViewController.git",
        "tag": "1.3.5"
    },
    "social_media_url": "http://www.lessney.com",
    "requires_arc": true,
    "documentation_url": "https://github.com/pcjbird/QuickWebViewController/blob/master/README.md",
    "screenshots": "https://github.com/pcjbird/QuickWebViewController/raw/master/logo.png",
    "platforms": {
        "ios": "8.0"
    },
    "frameworks": [
        "Foundation",
        "UIKit",
        "CoreGraphics",
        "WebKit",
        "JavaScriptCore",
        "QuartzCore",
        "MobileCoreServices",
        "CoreSpotlight"
    ],
    "source_files": "QuickWebKit/QuickWebKit.h",
    "dependencies": {
        "SmartJSWebView": [],
        "YYImage/WebP": [],
        "YYWebImage": [],
        "Popover.OC": []
    },
    "pod_target_xcconfig": {
        "OTHER_LDFLAGS": "-lObjC"
    },
    "subspecs": [
        {
            "name": "QuickWebViewController",
            "source_files": [
                "QuickWebKit/QuickWebKit.h",
                "QuickWebKit/QuickWebKitDefines",
                "QuickWebKit/QuickWebUtil",
                "QuickWebKit/QuickWebCore"
            ],
            "public_header_files": [
                "QuickWebKit/QuickWebKit.h",
                "QuickWebKit/QuickWebCore/*.{h}"
            ],
            "resource_bundles": {
                "QuickWebKit": [
                    "QuickWebBundles/QuickWebKitBundle/*.{png,lproj}"
                ]
            }
        },
        {
            "name": "QuickWebToastPlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebToastPlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebToastPlugin/*.{h}",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "Toast": []
            }
        },
        {
            "name": "QuickWebProviderPlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebProviderPlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebProviderPlugin/QuickWebProviderPlugin.h",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": []
            },
            "resource_bundles": {
                "QuickWebProviderPlugin": [
                    "QuickWebBundles/QuickWebProviderPluginBundle/*.lproj"
                ]
            }
        },
        {
            "name": "QuickWebSharePlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebSharePlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebSharePlugin/QuickWebSharePlugin.h",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "EasyShareKit": [],
                "GTMNSStringHTMLAdditions": []
            }
        },
        {
            "name": "QuickWebQRCodePlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebQRCodePlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebQRCodePlugin/QuickWebQRCodePlugin.h",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "ZXingObjC": [],
                "Toast": []
            }
        },
        {
            "name": "QuickWebLNRefreshPlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebLNRefreshPlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebLNRefreshPlugin/QuickWebLNRefreshPlugin.h",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "LNRefresh": []
            }
        },
        {
            "name": "QuickWebMJRefreshPlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebMJRefreshPlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebMJRefreshPlugin/QuickWebMJRefreshPlugin.h",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "MJRefresh": []
            }
        },
        {
            "name": "QuickWebSpotlightPlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebSpotlightPlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebSpotlightPlugin/QuickWebSpotlightPlugin.h",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "EasyShareKit": [],
                "GTMNSStringHTMLAdditions": [],
                "YYCategories": []
            }
        },
        {
            "name": "QuickWebJSBridgePlugin",
            "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin",
            "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/*.{h}",
            "dependencies": {
                "QuickWebKit/QuickWebViewController": [],
                "Toast": []
            },
            "resource_bundles": {
                "QuickWebJSBridgePlugin": [
                    "QuickWebBundles/QuickWebJSBridgePluginBundle/*.lproj"
                ]
            },
            "subspecs": [
                {
                    "name": "QuickWebJSBridgeSystemProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeSystemProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeSystemProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": []
                    }
                },
                {
                    "name": "QuickWebJSBridgeAccountProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeAccountProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeAccountProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": []
                    }
                },
                {
                    "name": "QuickWebJSBridgeContactProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeContactProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeContactProxy.{h}",
                    "frameworks": [
                        "AddressBookUI",
                        "AddressBook",
                        "ContactsUI"
                    ],
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": []
                    }
                },
                {
                    "name": "QuickWebJSBridgeNavBarProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeNavBarProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeNavBarProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": []
                    }
                },
                {
                    "name": "QuickWebJSBridgeShareProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeShareProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/CoreProxies/QuickWebJSBridgeShareProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": []
                    }
                },
                {
                    "name": "QuickWebJSBridgeImagePlayProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/ExtProxies/QuickWebJSBridgeImagePlayProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/ExtProxies/QuickWebJSBridgeImagePlayProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": [],
                        "IDMPhotoBrowser": []
                    }
                },
                {
                    "name": "QuickWebJSBridgeVideoPlayProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/ExtProxies/QuickWebJSBridgeVideoPlayProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/ExtProxies/QuickWebJSBridgeVideoPlayProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": [],
                        "ZFPlayer/AVPlayer": [
                            "~> 3.1.8"
                        ],
                        "ZFPlayer/ControlView": [
                            "~> 3.1.8"
                        ]
                    }
                },
                {
                    "name": "QuickWebJSBridgePushMessageProxy",
                    "source_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/ExtProxies/QuickWebJSBridgePushMessageProxy.{h,m}",
                    "public_header_files": "QuickWebKit/QuickWebPlugins/QuickWebJSBridgePlugin/Proxies/ExtProxies/QuickWebJSBridgePushMessageProxy.{h}",
                    "dependencies": {
                        "QuickWebKit/QuickWebViewController": []
                    }
                }
            ]
        }
    ]
}

Pin It on Pinterest

Share This