W moim kodzie próbuję pokazać UIWebView
podczas wczytywania strony, a następnie, po jej zakończeniu, przechwycić obraz z widoku WWW, aby buforować i wyświetlać później (więc nie muszę ponownie ładować i renderować Strona internetowa).Jak mogę sprawdzić, kiedy UIWebView zakończyło rysowanie do kontekstu?
mam coś na wzór:
CGContextRef context = CGBitmapContextCreate(…);
[[webView layer] renderInContext:context];
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *image = [UIImage imageWithCGImage:imageRef];
Problem biegnę na to, że z powodu UIWebView
„s kafli, czasami tylko połowa strony jest renderowany do kontekstu przez czas Przechwytuję obraz.
Czy istnieje sposób wykrywania lub blokowania wątku renderowania tła w tle, aby uzyskać obraz dopiero po zakończeniu renderowania?
UPDATE: Być może, że warunki wyścigowe wątek był czerwony śledź (nie wiadomo z dokumentacji, w każdym razie, czy UIWebView
„s niestandardowej warstwy lub CATiledLayer
w ogólnych bloków na jej tle wątków) .
Może to być problem z unieważnieniem (pomimo kilku rodzajów połączeń z numerem setNeedsDisplay
zarówno na UIWebView
, jak i na jego warstwie). Zmieniając granice UIWebView
przed wydaniem, wydaje się, że wyeliminowało to problem "nie rysuje całej rzeczy".
nadal uruchomiony na problem gdzie kilka płytek były sporządzone w starej skali, ale nazywając renderInContext:
dwukrotnie wydaje się, że w wystarczającym stopniu złagodzone.