Ipad UIScrollView上的多个UIWebView-s
我正在试验我开发的一款杂志类iPad应用程序,结果遇到了内存问题。 UIScrollView上有多个UIWebView-s。每个UIWebView都显示来自html文件源的html页面。不幸的是,我找不到解决方案来处理web视图,以便在加载应用程序后在后台顺利加载它们,而不是加载并激发每个html页面及其所有Java脚本和图像,因为我希望它们在我浏览它们时可见,但如果我收到“收到内存警告”在30个面板上显示消息,应用程序将中断 我用于显示web视图的代码如下:Ipad UIScrollView上的多个UIWebView-s,ipad,memory,uiwebview,Ipad,Memory,Uiwebview,我正在试验我开发的一款杂志类iPad应用程序,结果遇到了内存问题。 UIScrollView上有多个UIWebView-s。每个UIWebView都显示来自html文件源的html页面。不幸的是,我找不到解决方案来处理web视图,以便在加载应用程序后在后台顺利加载它们,而不是加载并激发每个html页面及其所有Java脚本和图像,因为我希望它们在我浏览它们时可见,但如果我收到“收到内存警告”在30个面板上显示消息,应用程序将中断 我用于显示web视图的代码如下: NSInteger numberO
NSInteger numberOfViews = 47;
for (int i = 0; i < numberOfViews; i++) {
CGFloat yOrigin = i * 768;
DetailViewController *detailViewController2 = [[DetailViewController alloc] initWithNibName:@"Detail" bundle:nil];
[detailViewController2.view setFrame:CGRectMake(yOrigin, 0, 768, 1024)];
detailViewController2.view.clipsToBounds = YES;
[scroll.view insertSubview:detailViewController2.view atIndex:0];
}
scroll.scrollView.contentSize = CGSizeMake(768 * numberOfViews,1004);
scroll.pageControl.numberOfPages = numberOfViews;
self.view.clipsToBounds = YES;
self.view.clearsContextBeforeDrawing = YES;
CGRect frame;
frame.origin.x = scroll.scrollView.frame.size.width * scroll.pageControl.currentPage;
frame.origin.y = 0;
frame.size = scroll.scrollView.frame.size;
[scroll.scrollView scrollRectToVisible:frame animated:NO];
self.scrollViewController = scroll;
[self.view insertSubview:scroll.view atIndex:0];
- (void)dealloc {
[scrollViewController release];
[tableOfContentsViewController release];
[portrait release];
[tableOfContents1 release];
[start release];
[super dealloc];
}
问题是我如何在UIScrollView上顺利地加载它们,并且只在面板反弹到视口中后启动Java脚本,我计划显示60多个带有html页面的Web视图?您需要回收视图。在一次只能看到一个视图的情况下创建一组视图不是一个好策略。苹果有一些关于这个主题的冗长视频教程。基本思想是最多使用3或4个视图(UIWebView)。当您滑动并且视图边界变为可见时,您将对其进行初始化。当它不再可见时,你就摧毁它。《华尔街日报》iPad和iPhone应用程序使用了类似的模式。 以下是一些参考资料和教程的链接:
你有苹果视频的链接吗:回收网络视图?
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:htmlfilename
ofType:@"html"
inDirectory:@"/htdocs" ];
NSString *html = [NSString stringWithContentsOfFile:htmlPath
encoding:NSUTF8StringEncoding
error:nil];
web.delegate = self;
[web setMultipleTouchEnabled:YES];
[web loadHTMLString:html
baseURL:[NSURL fileURLWithPath:
[NSString stringWithFormat:@"%@/htdocs/",
[[NSBundle mainBundle] bundlePath]]]];
- (void)dealloc {
//---release the memory used by the property---
[page release];
[web setDelegate:nil];
[web stopLoading];
[web release];
[orientation release];
[page release];
[super dealloc];
}