呈現所有圖片我目前正在開發的OS X應用程序,與OS X 10.6向後兼容。在某些時候,我創建了一個WebView,在該WebView中加載我動態創建的html內容。 HTML內容只有形成的圖像鏈接<img src=
和文字,沒有JavaScript或那樣的事情。所有的圖像(只有5個PNG圖像)存儲在本地,其大小爲4 KB。可可的WebView不會對OSX 10.8
我遇到的問題是一些圖像(那些不在「滾動」的可見側),第一次運行應用程序時,圖像不會顯示,除非我將窗口拖動到另一個屏幕或再次加載包含WebView的視圖控制器。在這些情況下,即使圖像不在現場,圖像也會顯示在「滾動」上。我曾嘗試使用NSURLCache加載每個圖像,以便WebView將更容易訪問它們...我已經嘗試使用IB和編程方式創建WebView,我已經使用Web自動保存,AllowsAnimatedImages ...相同的結果。
考慮到我的代碼是相當廣泛的我要交的只是我認爲相關的位:
NSString *finalHtml ... //contains the complete html
CGRect screenRect = [self.fixedView bounds];
CGRect webFrame = CGRectMake(0.0f, 0.0f, screenRect.size.width, screenRect.size.height);
self.miwebView=[[WebView alloc] initWithFrame:webFrame];
[self.miwebView setEditable:NO];
[self.miwebView setUIDelegate:self];
[self.miwebView setResourceLoadDelegate:self];
[self.miwebView setFrameLoadDelegate:self];
WebPreferences *webPref = [[WebPreferences alloc]init];
[webPref setAutosaves:YES];
[webPref setAllowsAnimatedImages:YES];
[webPref setAllowsAnimatedImageLooping:YES];
[self.miwebView setPreferences:webPref];
...
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
diskCapacity:20 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"line" ofType:@"png"];
NSURL *resourceUrl = [NSURL URLWithString:imagePath];
NSURLRequest *request = [NSURLRequest requestWithURL:resourceUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0f];
[URLCache cachedResponseForRequest:request];
...
NSString *pathResult = [[NSBundle mainBundle] bundlePath];
NSURL *baseURLRes = [NSURL fileURLWithPath:pathResult];
[[self.miwebView mainFrame] loadHTMLString:finalHtml baseURL:baseURLRes];
[self.fixedView addSubview:self.miwebView];
我還要提到的是如果圖像捕捉某處在可見光之間在「滾動」只圖像的可見位會即使頁面獲取滾動起來要呈現的不可見的側面......所以我覺得這一切都是一些渲染問題...
我感謝你的幫助, 謝謝!
我必須補充一點,這個問題是不存在於OS X 10.7它發生僅在10.8 – Artur