Czytnik epub do obsługi dużego pliku html

Tworzę czytnik epub na platformie IOS. Zasadniczo używa UIWebview do wyświetlania plików epub, czytam kod Aepubreadera open source i stwierdzam, że jest bardzo dobry, ale nie oparty na tekście. Chcę, aby tekst był oparty na stronie i obracał się jak iBooks. Więc staram się udoskonalić czytnik Aepubreader

Podstawowy przepływ logiczny to

rozpakuj plik epub.przeanalizuj metadane (opf, plik toc).załaduj pliki html przez UIWebView i połącz je z UIPageViewController

Wszystko działa dobrze, z wyjątkiem spektaklu.

Przypuśćmy, że epub ma dziesięć plików html (plik1 - plik10). file1 ~ file9 ma mały rozmiar (jak 100k), ale plik 10 to 1MB. kiedy czytam do pierwszej strony pliku10, ładowanie tego 1 MB pliku kosztuje dużo czasu. To dopuszczalne, ponieważ to pierwszy raz. Ale kiedy przejdę do drugiej strony pliku10. Nadal muszę załadować ten plik 1MB ponownie i wywołać js, aby przewinąć offsetx według numeru strony (nie ma możliwości skopiowania UIWebView na Apple Offical Document). To nie jest do zaakceptowania. Nie mogę pozwolić, aby użytkownik zawsze czekał, gdy włącza stronę w tym pliku.

W końcu dostałem rozwiązanie, aby uniknąć ponownego ładowania tego dużego pliku. Kiedy otrzymam pierwszą stronę pliku10. Przechwytuję ten widzialny widok jako obraz, ale nie wyświetlaję go, kiedy przechodzę do następnej strony, wyświetlam ten obraz dla strony1, w międzyczasie nadaję UIwebview od strony1 do strony2. jak Page2.view.addSubview (webviewfrompage1). Pozwoli to uniknąć ponownego przeglądania stron internetowych i zaoszczędzić czas. Ale nadchodzi inny problem, Page2.view.addSubview (webviewfrompage1) spowoduje, że page2 layoutsubview, co oznacza, że ​​strona 2 przerysuje swój widok, aby pokazać zawartość webview. Jest to zawartość pliku o wielkości 1 MB, przerysuj wciąż koszt, a utknie animacja obrotu strony. Szukałem dużo, ale wciąż nie mam rozwiązania. Sprawdzam iBooks, działa idealnie. Jak przetrzymał duży plik?

Daj mi znać, jeśli masz jakieś przemyślenia na ten temat. lub inne rozwiązanie do obsługi wyświetlania epub.

Z góry dziękuję

-------------------------------------------------- -------------------------------------------

odpowiedz na torazaburo:

Tak, masz całkowitą rację. Planowałem użyć window.scroll (offsetX, offsetY), aby uzyskać zawartość następnej strony. Ale to nie wystarczy. Chcę, aby animacja obracania strony była jak ibooki. Używam więc UIPageViewController. Korzystanie z UIPageViewController oznacza, że ​​muszę zaimplementować kolejnych dwóch delegatów

- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerAfterViewController: (UIViewController *) viewController {}

(UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerBeforeViewController: (UIViewController *) viewController {

}

W każdym deleagte muszę zaalokować kontroler widoku, przeładować adres URL i ustawić przesunięcie na odpowiednią stronę. Więc za każdym razem, gdy strona się zmienia, nie jest to tylko przesunięcie dla zawartości, ale przydzielenie nowego adresu uiwebview i ponowne załadowanie, a następnie ustawienie przesunięcia.

torazaburo, co o tym sądzisz?

questionAnswers(0)

yourAnswerToTheQuestion