SDWebView基于WkWebView的深度封装,SDPhotoBrowserd一个优雅的图片预览库 ...

版权所有,禁止匿名转载;禁止商业使用。

SDWebView组件 是针对WKWebView进行的深度封装、支持和H5交互、H5图片预览、包括调用js方法等。挺全面的!真的!

SDPhotoBrowserd组件 是一个图片浏览器,创建简单易用,
可以复制demo中的代码。
demo是使用SDWebView加载的图片页面,然后使用
SDPhotoBrowserd进行图片预览,磨砂的背景比普通黑色耐
看!需要用到WKWebView中图片预览的这个demo就在合适不过
了!

给我一颗星,照亮我的心。
demo下载

图片描述
Demo中包含两个组件,SDWebView 和 SDPhotoBrowserd,demo中图片缓存用到了SDWebImage 框架,下载demo 后需要pod install 一下。

?一.支持H5页面图片预览 ? ?二.支持H5调用OC ?OC调用H5 ? ?三.更多!!!

    //给webView添加监听title和进度条
    [self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:nil];
    [self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];

    //kvo监听进度条
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
        if ([object isKindOfClass:[SDWebView class]]) {
            if ([keyPath isEqualToString:@"estimatedProgress"]) {
                CGFloat newprogress = [[change objectForKey:NSKeyValueChangeNewKey] doubleValue];
                if (newprogress == 1) {
                    self.webView.progressView.hidden = YES;
                    [self.webView.progressView setProgress:0 animated:NO];
                }else {
                    self.webView.progressView.hidden = NO;
                    [self.webView.progressView setProgress:newprogress animated:YES];
                }
            }
            if ([keyPath isEqualToString:@"title"]) {
                if (self.webView.title.length > 10) {
                    self.navigationItem.title = [self.webView.title substringToIndex:14];
                } else {
                    self.navigationItem.title = self.webView.title;
                }
            }
        } else {
            [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
        }
    }
    //移除监听
    [self.webView removeObserver:self forKeyPath:@"estimatedProgress"];
    [self.webView removeObserver:self forKeyPath:@"title"];

    //js调OC时,需要让前端人员写如下js代码   
0 0