iOS Tableview cell 上嵌套网页并且支持图片点击预览
2016-12-14 16:39
716 查看
一 实现效果:
在一个TableVeiw中的一个cell上嵌套一个WebView,并且支持网页上的图片浏览;
二 难点分析:
WebView高度不确定,查找HTML中图片,插入js代码,对图片进行点击操作;
三 设计思想:
1:Load Data And Later:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
2:UIWebView Delegate Methods
-(void)webViewDidFinishLoad:(UIWebView *)webView
获取高度:CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
刷新界面:[self.tableView reloadData];
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
[cell.contentView addSubview:_webView];
//插入js代码,对图片进行点击操作
NSString * result = [self.webView stringByEvaluatingJavaScriptFromString:@"function assignImageClickAction(){var imgs=document.getElementsByTagName('img');var length=imgs.length;for(var i=0;
i < length;i++){img=imgs[i];if(\"ad\" ==img.getAttribute(\"flag\")){var parent = this.parentNode;if(parent.nodeName.toLowerCase() != \"a\")return;}img.onclick=function(){window.location.href='image-preview:'+this.src}}}"]; DSLog(@"插入js代码,对图片进行点击操作 %@",result);
NSString * resultAction = [self.webView stringByEvaluatingJavaScriptFromString:@"assignImageClickAction();"];
DSLog(@"resultAction:%@",resultAction);
3:Get Images and nodeCountOfTag
- (NSArray *)getImgs
{
NSMutableArray *arrImgURL = [[NSMutableArray alloc] init];
for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].src", i];
NSString * str = [self.webView stringByEvaluatingJavaScriptFromString:jsString];
[arrImgURL addObject:str];
}
_imageArray = [NSMutableArray arrayWithArray:arrImgURL];
return arrImgURL;
}
//获取某个标签的结点个数
- (NSInteger)nodeCountOfTag:(NSString *)tag
{
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('%@').length", tag];
int count = [[_webView stringByEvaluatingJavaScriptFromString:jsString] intValue];
return count;
}
4:WebViewImageClickAction
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if ([request.URL isEqual:@"about:blank"])
{
return true;
}
if ([request.URL.scheme isEqualToString: @"image-preview"])
{
NSString *url = [request.URL.absoluteString substringFromIndex:14];
//启动图片浏览器, 跳转到图片浏览页面
if (_imageArray.count != 0) {
self.imgType = LessonDetailImgTypeLessonContent;
HZPhotoBrowser *browserVc = [[HZPhotoBrowser alloc] init];
browserVc.imageCount = self.imageArray.count; // 图片总数
browserVc.currentImageIndex = [_imageArray indexOfObject:url];//当前点击的图片
browserVc.delegate = self;
[browserVc show];
}
return NO;
}
// 用户点击文章详情中的链接
if ( navigationType == UIWebViewNavigationTypeLinkClicked ) {
DSLog(@"打开链接");
return NO;
}
return YES;
}
在一个TableVeiw中的一个cell上嵌套一个WebView,并且支持网页上的图片浏览;
二 难点分析:
WebView高度不确定,查找HTML中图片,插入js代码,对图片进行点击操作;
三 设计思想:
1:Load Data And Later:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
2:UIWebView Delegate Methods
-(void)webViewDidFinishLoad:(UIWebView *)webView
获取高度:CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
刷新界面:[self.tableView reloadData];
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
[cell.contentView addSubview:_webView];
//插入js代码,对图片进行点击操作
NSString * result = [self.webView stringByEvaluatingJavaScriptFromString:@"function assignImageClickAction(){var imgs=document.getElementsByTagName('img');var length=imgs.length;for(var i=0;
i < length;i++){img=imgs[i];if(\"ad\" ==img.getAttribute(\"flag\")){var parent = this.parentNode;if(parent.nodeName.toLowerCase() != \"a\")return;}img.onclick=function(){window.location.href='image-preview:'+this.src}}}"]; DSLog(@"插入js代码,对图片进行点击操作 %@",result);
NSString * resultAction = [self.webView stringByEvaluatingJavaScriptFromString:@"assignImageClickAction();"];
DSLog(@"resultAction:%@",resultAction);
3:Get Images and nodeCountOfTag
- (NSArray *)getImgs
{
NSMutableArray *arrImgURL = [[NSMutableArray alloc] init];
for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].src", i];
NSString * str = [self.webView stringByEvaluatingJavaScriptFromString:jsString];
[arrImgURL addObject:str];
}
_imageArray = [NSMutableArray arrayWithArray:arrImgURL];
return arrImgURL;
}
//获取某个标签的结点个数
- (NSInteger)nodeCountOfTag:(NSString *)tag
{
NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('%@').length", tag];
int count = [[_webView stringByEvaluatingJavaScriptFromString:jsString] intValue];
return count;
}
4:WebViewImageClickAction
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if ([request.URL isEqual:@"about:blank"])
{
return true;
}
if ([request.URL.scheme isEqualToString: @"image-preview"])
{
NSString *url = [request.URL.absoluteString substringFromIndex:14];
//启动图片浏览器, 跳转到图片浏览页面
if (_imageArray.count != 0) {
self.imgType = LessonDetailImgTypeLessonContent;
HZPhotoBrowser *browserVc = [[HZPhotoBrowser alloc] init];
browserVc.imageCount = self.imageArray.count; // 图片总数
browserVc.currentImageIndex = [_imageArray indexOfObject:url];//当前点击的图片
browserVc.delegate = self;
[browserVc show];
}
return NO;
}
// 用户点击文章详情中的链接
if ( navigationType == UIWebViewNavigationTypeLinkClicked ) {
DSLog(@"打开链接");
return NO;
}
return YES;
}
相关文章推荐
- iOS UICollectionView 入门 07 点击cell放大图片
- iOS开发中tableview中cell图片大小自定义方法
- IOS 延时加载TableView中Cell中的图片
- 点击tableview里的cell后改变cell的背景图片
- [置顶] 简述如何嵌套使用Viewpager,点击图片放大查看图片,并且使用PhotoView进行图片处理
- iOS tableview cell 去除点击效果 和 选择效果
- 进击的KFC:iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
- iOS开发使用sdWebImage实现对tableView的cell加载图片淡入动画
- iOS开发之tableView点击下拉扩展与内嵌collectionView上传图片效果
- iOS点击TableView的cell显示弹出动画
- IOS tableView 点击一下cell,效果随离开触摸恢复(个人)
- iOS界面不能点击(tableView 的cell 不能使用点击事件,tableView也不能上下滚动)
- iOS之设置tableView背景图片/让UITableView自动滑动(定位)到某一行cell
- ios tableview/collectionView关于点击cell后 刷新cell
- IOS中点击TableView的Cell跳转
- iOS开发中tableview中cell图片自定义方法。
- ios tableView 自定义cell上的按钮点击事件不好用
- iOS 点击tableView的cell,让其滚到屏幕顶部
- iOS 点击TableView 记录当前cell 当pop 回到页面时停留在之前点击的cell
- iOS UICollectionView 入门 07 点击cell放大图片