Ich habe einen nativen iOS-Bildschirm mit UITableView
innerhalb, die Artikel anzeigt. Einige Zellen in dieser Tabelle zeigen Artikelbild, Titel, Autor, Kommentare usw. an. Es gibt jedoch eine einzelne Zelle mit UIWebView
darin, die Artikelinhalt anzeigt. Diese Zelle hat abhängig von der Inhaltsgröße eine dynamische Höhe. Der Artikelinhalt wird vom Server als HTML-Zeichenfolge in der JSON-Antwort verwendet und kann Bilder, Videos und andere Dinge enthalten, die das HTML-Format unterstützen. Ich kann diese Zeichenfolge in Abhängigkeit von bestimmten Anforderungen mit regulären Ausdrücken bearbeiten (z. B. die Schriftgröße abhängig von den App-Einstellungen erhöhen). Hier ist ein Bild meiner UI Struktur darstellt: UIWebView mit dynamischer Höhe führt zu Speicherabsturz
Das Problem ist, dass, sobald der Inhalt des Artikels ist sehr groß, UITableView
Zelle mit UIWebView
innen auch in der Höhe sehr groß wird, und dies führt zu Speicher zum Absturz bringen. In meinem Fall passiert dieser Absturz nur auf dem iPhone 6 Plus. Auf allen anderen Geräten einschließlich iPhone (5, 5S, 6), iPad (2, 3, 4) (und wahrscheinlich anderen Geräten, die iOS 7 unterstützt) App funktioniert ordnungsgemäß. Wie ich vermute, ist der Grund dafür, dass iPhone 6 Plus einen hochauflösenden Bildschirm und nur 1 GB Speicher hat. Wenn also der gleiche Inhalt mit der gleichen Speicherkapazität wie bei anderen Geräten gerendert wird, jedoch in größerer Auflösung, führt dies zu einem Speicherabsturz.
Ich habe zwei erstellt Testanwendungen mit UI wie im Bild unten:
Beiden Anwendungen laden den gleichen HTML-Inhalt in einer einzigen UIWebView
. In beiden Apps gibt es keine andere Logik oder Logik.
Wenn a) alles korrekt funktioniert, erscheint der Scroll-Indikator und nur der sichtbare Inhalt wird gerendert. Wenn ich schnell scrolle, sehe ich Leerraum, der nach einem Moment durch gerenderten Inhalt ersetzt wird.
In Fall b) UIWebView
erstreckt sich, um Inhaltsgröße zu passen. Test-App stürzt ab (wie meine echte App). Wie ich vermute, werden in diesem Fall sogar unsichtbare Inhalte gerendert und das führt zu einem Speicherabsturz.
Also meine Frage ist: Wie kann ich diesen Fehler beheben, ohne innerhalb UIWebView
zu Scrollen? Nur UITableView
sollte scrollbar sein
Sie jemals herausfinden? Ich stoße auf dasselbe Problem. –
Ich bin auch mit diesem Problem konfrontiert. Hast du es gelöst? Vielen Dank. –
Ich habe dieses Problem gelöst, indem ich die maximale Höhe für die Web-View-Zelle eingeschränkt habe. Wenn die Zellenhöhe der Webansicht mehr als eine bestimmte Anzahl von Pixeln beträgt, zeige ich statt der Erhöhung der Höhe die Schaltfläche "Mehr anzeigen ..." an. Wenn der Benutzer auf diese Schaltfläche klickt, wird UIWebView im Vollbildmodus ohne zusätzliche UI-Elemente angezeigt und der Benutzer kann nur UIWebView-Inhalte scrollen. Ich mag diese Lösung nicht, aber das ist die einzige Lösung, die ich gefunden habe. In meinem Fall wurde dies von Kunden genehmigt. –