您的位置:首页 > 移动开发

关于webview 加载本地图片资源 显示不出来的解决办法

2012-10-09 16:01 1041 查看
由于项目需要 需要加载本地和网络的图片
由于数据是动态的 所以我需要把得到的html网页 拆揭 换上动态数据

可是遇到一个奇怪的问题 加载出来的东西 本地的图片 不能加载上。。。。 其余的文字 什么的 都没有问题

网上找了个例子

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

NSURL *baseURL = [NSURL fileURLWithPath:path];

NSString *htmlString = [NSString
stringWithContentsOfFile:[[NSBundle
mainBundle]pathForResource:@"index_pic1"
ofType:@"html"]
encoding:NSUTF8StringEncoding
error:nil];
[self.moblieWebView
loadHTMLString:htmlString baseURL:baseURL];

把我自己获得的html 填充进去 没有任何问题

很奇怪 问题在哪呢?

self.finalStr
= [NSMutableString string];
//初始化拼装字符串

self.moblieWebView = [[[UIWebView
alloc]initWithFrame:CGRectMake(self.view.frame.origin.x,
self.view.frame.origin.y,
self.view.frame.size.width,
self.view.frame.size.height -
kTabBarHeight) ]
autorelease];

self.moblieWebView.autoresizingMask =
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

self.moblieWebView.dataDetectorTypes =
UIDataDetectorTypeNone; //去掉数字下划线

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

NSURL *baseURL = [NSURL
fileURLWithPath:resourcePath];

NSString *HeadPath = [resourcePath stringByAppendingPathComponent:@"Head.html"];

NSString *startString=[[[NSString
alloc] initWithContentsOfFile:HeadPath
encoding:NSUTF8StringEncoding
error:nil]
autorelease];

//html head
[self.finalStr
appendString:startString];

//加载动态html数据

[self.finalStr
appendString:@"<body>\n"];
[self.finalStr
appendString:@"<div id=\"caption\">\n"];

//加载标题
[self.finalStr
appendString:@"<div id=\"title\">\n"];
[self.finalStr
appendString:@"<h1>"];
[self.finalStr
appendFormat:@"标题"];
//标题
[self.finalStr
appendString:@"</h1>\n"];
[self.finalStr
appendString:@"</div>\n"];

//加载日期

[self.finalStr
appendString:@"<div id=\"date\">\n"];
[self.finalStr
appendString:@"<h2>"];
[self.finalStr
appendFormat:@"2012-10-09"];
//日期
[self.finalStr
appendString:@"</h2>\n"];
[self.finalStr
appendString:@" </div>\n"];
[self.finalStr
appendString:@"<div id=\"text\">\n"];

//显示的图片
[self.finalStr
appendString:@"<a href = \"javascript:void(0)\" onclick = \"document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'\"><div id=\"pic\"><img
class=\"img-wrapper\" src=\"http://www.acwind.net/images/icdb_pics_collect/856_3723.jpg\"></div>\n"];

//显示的图片上的加号
[self.finalStr
appendFormat:@"<div id=\"pic\"><img class=\"plus\" src=\"NewsPicPlus@2x.png\" style=\"position:absolute; \"/></div></a> "];

//点击放大后
图片上的叉号
[self.finalStr
appendString:@"<div id=\"light\" class=\"white_content\">"];
[self.finalStr
appendString:@"<a href = \"javascript:void(0)\" onclick = \"document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'\"><img id=\"button\"
class=\"funtion_button\" src=\"Shutdown@2x.png\" style=\"display:block;\"/><img id=\"EnlargePhoto\" src=\"http://www.acwind.net/images/icdb_pics_collect/856_3723.jpg\" onload=\"javascript:DrawImage(this)\"/ ></a></div>"];
[self.finalStr
appendString:@"<div id=\"fade\" class=\"black_overlay\"></div>"];

//简介
[self.finalStr
appendFormat:@"<p>简介
简介
简介</p>"];

//内容
[self.finalStr
appendFormat:@"<p>这里是内容</p>"];

//时间
[self.finalStr
appendFormat:@"<p>这里是时间</p>"];

//作者
[self.finalStr
appendFormat:@"<p>这里是作者</p>"];

//html end
[self.finalStr
appendFormat:@"</div>\n</div>\n</body>\n</html>\n"];

[self.moblieWebView
loadHTMLString:self.finalStr
baseURL:nil];

self.moblieWebView.scalesPageToFit =
YES;
[self.view
addSubview:self.moblieWebView];

最后才发现 即使你是 自己拼装的字符串 这个 baseURL 也需要制定一下 如果不制定 本地图片就不能加载~

换成

[self.moblieWebView
loadHTMLString:self.finalStr
baseURL:baseURL];

完美解决!

至今没搞懂 苹果底层 是怎么处理的 即使是自己拼装的字符串 也不能让 baseUrl 这个属性为空~

也欢迎有大侠帮小菜解答一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: