Nsstring* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:link];NSURL* url = [NSURL fileURLWithPath:path];NSURLRequest* request = [NSURLRequest requestWithURL:url];UIWebVIEw* webVIEw = [[UIWebVIEw alloc] initWithFrame:CGRectMake(0,725,1004)];webVIEw.delegate = cell;[webVIEw loadRequest:request];[self.vIEw addSubvIEw:webVIEw]; // doesn't work without this line,but then the UIWebVIEw is onscreen
然后在代表中:
- (voID)webVIEwDIDFinishLoad:(UIWebVIEw *)webVIEw{ [self performSelector: @selector(render:) withObject: webVIEw afterDelay: 0.01f];}- (voID) render: (ID) obj{ UIWebVIEw* webVIEw = (UIWebVIEw*) obj; CGSize thumbsize = CGSizeMake(96,72); UIGraphicsBeginImageContext(thumbsize); CGContextRef context = UIGraphicsGetCurrentContext(); CGfloat scalingFactor = thumbsize.wIDth/webVIEw.frame.size.wIDth; CGContextScaleCTM(context,scalingFactor,scalingFactor); [webVIEw.layer renderInContext: context]; UIImage *resultimage = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); self.thumbnail.image = resultimage;}
这是我的问题:
1)我的一般方法是否正确?这是批量处理网页缩略图的最有效方法吗?
2)我希望能够从屏幕外的UIWebVIEw渲染缩略图,但是除非我将UIWebVIEw添加到视图层次结构中,否则不会调用webVIEwDIDFinishLoad :.有没有办法可以避免这种情况?
3)如果我尝试在webVIEwDIDFinishLoad:中捕获UIWebVIEw的图像,我会得到一个空白图像.我必须为捕获工作做出人为的延迟.有什么方法吗?
谢谢!
解决方法 1)这似乎是我所知道的唯一方法,而不依赖于第三方基于服务器的API(如果存在)2)您可以通过将其框架设置为屏幕外的位置来在屏幕外绘制UIWebVIEw.例如320,568,1008.我还没有测试过,但您甚至可以将视图设置为1 x 1px帧.
3)我想这是因为当调用webVIEwDIDFinishLoad:时,在Web视图上调用了SetNeedsdisplay(),但Web视图尚未重新绘制.我不确定解决这个问题的方法.
总结以上是内存溢出为你收集整理的在iOS上生成本地网页的缩略图全部内容,希望文章能够帮你解决在iOS上生成本地网页的缩略图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)