İçinde UITableView
ile yerel bir iOS ekranı var, bu da bazı makaleleri görüntüler. Bu tablodaki bazı hücreler makale görüntüsünü, başlığı, yazarı, yorumları vb. Görüntüler. Ancak, makale içeriğini görüntüleyen içinde UIWebView
bulunan tek bir hücre var. Bu hücre, içerik boyutuna bağlı olarak dinamik yüksekliğe sahiptir. Makale içeriği, sunucudan JSON yanıtında html dizesi olarak gider ve HTML biçimini destekleyen resimler, videolar ve diğer şeyler içerebilir. Bu dizeyi, bazı gereksinimlere bağlı olarak düzenli ifadeler kullanarak düzenleyebilirim (örneğin, uygulama ayarlarına bağlı olarak yazı tipi boyutunu artır). Dinamik yüksekliği olan UIWebView, bellek çökmesine neden oluyor
sorun Makalenin içeriği çok büyük bir defa, UIWebView
ile UITableView
hücre içi de yüksekliği çok büyük olur ve bu bellek çökmesine yol açıyor olmasıdır: İşte benim UI yapısını temsil eden bir görüntüdür. Benim durumumda bu çarpışma sadece iPhone 6 Plus'ta gerçekleşir. IPhone (5, 5S, 6), iPad (2, 3, 4) (ve muhtemelen iOS 7'yi destekleyen diğer cihazlar) dahil olmak üzere diğer tüm cihazlarda doğru şekilde çalışıyor. Sebep olarak, iPhone 6 Plus'ın yüksek çözünürlüklü ekrana ve yalnızca 1 Gb belleğine sahip olduğundan şüpheleniyorum. Bu nedenle, aynı içeriği diğer cihazlarda olduğu gibi aynı miktarda bellekle birlikte, ancak daha büyük çözünürlükte bellek çökmesine yol açar.
Ben aşağıdaki resimde olduğu gibi UI ile iki deney uygulamaları oluşturduk:
Hem uygulamalar tek UIWebView
yılında aynı HTML içeriği yükler. Her iki uygulamada başka bir ui veya mantık yoktur.
a) tüm çalışmaların doğru olması durumunda, kaydırma göstergesi belirir ve yalnızca görünür içerik görüntülenir. Hızlı kaydırırken, bir andan sonra işlenen içerikle değiştirilen beyaz alanı görebilirim. B) UIWebView
, içerik boyutuna uyacak şekilde genişletilir. Test uygulaması çöküyor (gerçek uygulamam gibi). Bu durumda şüpheli olduğum gibi, görünmeyen içerik bile oluşuyor ve bu da bellek çökmesine yol açıyor.
Yani benim soru: nasıl UIWebView
içine kaydırma yapmadan bu hatayı düzeltebilirim? Yalnızca UITableView
kaydırılabilir olmalıdır
Bunu hiç anladın mı? Aynı konuya koşuyorum. –
Ayrıca bu sorunla karşı karşıyayım. Çözdün mü? Teşekkürler. –
Bu sorunu, web görüntüleme hücresi için maksimum yüksekliği kısıtlayarak çözdüm. Web görüntüleme hücresi yüksekliği, belirli bir piksel miktarından daha fazlaysa, yüksekliğini artırmak yerine "Daha fazla göster ..." düğmesini gösterir. Kullanıcı bu düğmeye dokunduğunda, tam ekran UIWebView ek UI öğeleri olmadan sunulur ve kullanıcı yalnızca UIWebView içeriğini kaydırabilir. Bu çözümü sevmiyorum ama bulduğum tek çözüm bu. Benim durumumda bu müşteriler tarafından onaylandı. –