epub reader für große html dateien

Ich erstelle einen Epub-Reader für die IOS-Plattform. Grundsätzlich verwendet es UIWebview, um Epub-Dateien anzuzeigen. Ich habe den Code von Open Source Aepubreader gelesen und finde, dass er sehr gut, aber nicht textbasiert ist. Ich möchte es textbasiert gestalten und wie iBooks umblättern. Also versuche ich den Aepubreader zu verfeinern

Der grundlegende logische Ablauf ist

Entpacken Sie die Epub-Datei.Analysieren Sie die Metadaten (opf, toc-Datei).Laden Sie HTML-Dateien von UIWebView und binden Sie sie an UIPageViewController

Alles funktioniert gut, bis auf die Leistung.

Angenommen, das Epub hat zehn HTML-Dateien (Datei1 - Datei10). Datei1 ~ Datei9 ist klein (wie 100 KB), aber Datei 10 ist 1 MB groß. Wenn ich zur ersten Seite von file10 lese, kostet das Laden dieser 1-MB-Datei viel Zeit. Das ist akzeptabel, da es das erste Mal ist. Aber wenn ich auf die zweite Seite von file10 gehe. Ich muss diese 1MB-Datei noch einmal laden und ein js aufrufen, um den Offset x nach Seitenzahl zu scrollen (keine Möglichkeit, ein UIWebView per Apple Office-Dokument zu kopieren). Das ist nicht akzeptabel. Ich kann nicht zulassen, dass der Benutzer immer wartet, wenn er diese Datei umblättert.

Endlich habe ich eine Lösung gefunden, um das erneute Laden dieser großen Datei zu vermeiden. Wenn ich die erste Seite von file10 angezeigt bekomme. Ich nehme diese sichtbare Ansicht als Bild auf, aber zeige sie nicht an, wenn ich zur nächsten Seite gehe, zeige ich dieses Bild für die Seite1 an, während ich die UIweb-Ansicht von Seite1 bis Seite2 gebe. wie Page2.view.addSubview (webviewfrompage1). Dies vermeidet das erneute Laden von Webview und spart Zeit. Ein weiteres Problem ist jedoch, dass Page2.view.addSubview (webviewfrompage1) die Layout-Teilansicht von Page2 verursacht. Dies bedeutet, dass Page2 die Ansicht neu zeichnet, um den Inhalt der Webansicht anzuzeigen. Dies ist eine 1-MB-Datei, deren Neuzeichnung immer noch Zeit kostet und bei der die Animation des Seitenblatts hängen bleibt. Ich habe viel gesucht, aber immer noch keine Lösung. Ich überprüfe die iBooks, es funktioniert perfekt. Wie hat es die große Akte gehandhabt?

Bitte lassen Sie mich wissen, wenn Sie irgendwelche Gedanken dazu haben. oder eine andere Lösung für die Anzeige von Epubs.

Danke im Voraus

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

Antwort an Torazaburo:

Ja, du hast absolut recht. Ich hatte vor, window.scroll (offsetX, offsetY) zu verwenden, um den nächsten Seiteninhalt zu erhalten. Das reicht aber nicht. Ich möchte, dass die Seitenanimation genauso aussieht wie die von I-Books. Also benutze ich UIPageViewController. Wenn ich UIPageViewController verwende, muss ich die folgenden zwei Delegaten implementieren

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

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

}

In jedem Deleagte muss ich einen Viewcontroller zuweisen, die URL neu laden und den Offset auf die richtige Seite setzen. Jedes Mal, wenn eine Seite gewechselt wird, wird nicht nur der Versatz für den Inhalt festgelegt, sondern es wird eine neue UIWEB-Ansicht zugewiesen und die URL neu geladen und dann der Versatz festgelegt.

torazaburo, was denkst du?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage