UIWebView加載SVG圖以及交互

一、頭文件添加<JavaScriptCore/JavaScriptCore.h>,定義webView窗口以及創(chuàng)建JSContext 對(duì)象,添加UIWebViewDelegate代理

#import <JavaScriptCore/JavaScriptCore.h>

@property (nonatomic, strong) UIWebView *webView;
@property (nonatomic, strong)JSContext *context;

二、創(chuàng)建webView

-(void)SVGShow{
    self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT-64)];
    [self.view addSubview:self.webView];
    //設(shè)置屬性
    self.webView.delegate = self;
    self.webView.scalesPageToFit = YES;
    self.webView.multipleTouchEnabled = YES;
    self.webView.userInteractionEnabled = YES;
    self.webView.scrollView.scrollEnabled = YES;
   //可網(wǎng)絡(luò)加載SVG圖
    NSString *svgPath = [[NSBundle mainBundle] pathForResource:@"文件名稱" ofType:@"svg"];
    NSData *svgData = [NSData dataWithContentsOfFile:svgPath];
    NSString *reasourcePath = [[NSBundle mainBundle] resourcePath];
    NSURL *baseUrl = [[NSURL alloc] initFileURLWithPath:reasourcePath isDirectory:true];
    [_webView loadData:svgData MIMEType:@"image/svg+xml" textEncodingName:@"UTF-8" baseURL:baseUrl];
    //iOS11廢棄了automaticallyAdjustsScrollViewInsets屬性,需要使用scrollview的contentInsetAdjustmentBehavior屬性
    if (@available(iOS 11.0, *)) {
        self.webView.scrollView.contentInsetAdjustmentBehavior= UIScrollViewContentInsetAdjustmentNever;
    } else {
        // Fallback on earlier versions
    }
}

三、實(shí)現(xiàn)代理

#pragma - mark WebViewDelegate  必須都實(shí)現(xiàn),否則會(huì)有警告
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    return YES;
}
//這個(gè)代理必須實(shí)現(xiàn),否則將無法注入JS
- (void)webViewDidStartLoad:(UIWebView *)webView{
    
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
    self.context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    self.context[@"對(duì)應(yīng)的網(wǎng)頁調(diào)用方法"] = ^(返回的參數(shù)) {
        
    };
}

JS與OC交互可參考http://www.itdecent.cn/p/6d399be6cb87

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、簡(jiǎn)介 近兩年隨著HTML5的迅速發(fā)展與日趨成熟,越來越多的移動(dòng)開發(fā)者選擇使用HTML5來進(jìn)行混合開發(fā),不僅節(jié)約...
    RainyGY閱讀 2,002評(píng)論 1 12
  • 一、簡(jiǎn)介 近兩年隨著HTML5的迅速發(fā)展與日趨成熟,越來越多的移動(dòng)開發(fā)者選擇使用HTML5來進(jìn)行混合開發(fā),不...
    寶寶teacher閱讀 2,448評(píng)論 3 15
  • 跟原生開發(fā)相比,H5的開發(fā)相對(duì)來一個(gè)成熟的框架和團(tuán)隊(duì)來講在開發(fā)速度和開發(fā)效率上有著比原生很大的優(yōu)勢(shì),至少不用等待審...
    大沖哥閱讀 1,901評(píng)論 0 7
  • 隨著H5技術(shù)的興起,在iOS開發(fā)過程中,難免會(huì)遇到原生應(yīng)用需要和H5頁面交互的問題。其中會(huì)涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,236評(píng)論 1 8
  • 姓名:丁娟 公司:杭州簡(jiǎn)品食品股份有限公司 【日精進(jìn)打卡99天】 【組別】 第301期樂觀二組學(xué)員 【知~學(xué)習(xí)】 ...
    御足粉娟閱讀 159評(píng)論 0 0

友情鏈接更多精彩內(nèi)容