iOS开发的UIWebView

  上周看了几天的UIWebView,终于知道如何展示本地HTML,并且正确加载HTML相对路径下的JS文件了。但是,方案上午被否决了,为了缅怀一下上周的收获,也防止以后重蹈UIWebView的覆辙,还是记录一下为好。

UIWebView类有三个主要方法:

	

- (void)loadRequest:(NSURLRequest *)request;

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;


加载本地文件可以用第二个或者第三个,我本着简单做人高效做事的原则,选择了参数少的第二个方法。几经周折才发现,第二个参数baseURL:(NSURL *)baseURL的作用就是指定HTML文件中所有“超链接”“CSS”“JS”文件的相对路径的基地址。还有一点值得注意的是,想xcode工程中添加HTML和JS文件的时候,最好将整个文件夹以文件夹引用的形式添加,如下图,否则JS文件可能没加到工程中去。



然后加载HTML页面的代码如下:

 NSString *bundlePath = [[NSBundle mainBundle] bundlePath] ;

    bundlePath = [bundlePath stringByAppendingString:@"/anychart" ] ;

    NSString * htmlPath = [NSBundle pathForResource:@"xchart4html5.config"                                            ofType:@"html" inDirectory:bundlePath];

NSString * htmlPageStr = [NSString stringWithContentsOfFile:htmlPath ] ;

    [webView loadHTMLString:htmlPageStr  baseURL:baseURL ] ;


注意上文中的“baseURL”的计算过程如下:

 

 
  

NSString *bundlePath = [[NSBundle mainBundle] bundlePath] ;

    bundlePath = [bundlePath stringByAppendingString:@"/anychart" ] ;

    NSMutableString* stringBuffer = [[NSMutableString alloc ] init ] ;

    [stringBuffer appendString:bundlePath ]  ;

    NSURL *baseURL = [NSURL fileURLWithPath:stringBuffer];


然后就没有然后了,K.O.





你可能感兴趣的:(iOS)