2011-07-08 37 views
18

cách tốt nhất để hiển thị nhiều của RichText (định dạng HTML)Hiển thị Lots Of RichText: Chọn lựa chọn tốt nhất

Tại thời điểm tôi đang làm việc trên một ứng dụng cho một diễn đàn là gì. Như bạn mong đợi các bài đăng trên trang web có nhiều định dạng HTML, danh sách, hình ảnh văn bản in đậm, văn bản màu, v.v ...

Bây giờ có một số tùy chọn tôi có thể nghĩ (không lý tưởng cho chúng, xin vui lòng nếu bạn nghĩ về các lựa chọn khác gửi cho họ trong các ý kiến):

  • Tuỳ chỉnh tế bào sử dụng NSAttributedString+HTML + DTAttributedTextView cho mỗi bài đăng?

    Sự cố: Tôi đã sử dụng danh mục HTML NSAttributedString + trong ứng dụng ở nơi khác và ít lý tưởng hơn, việc tạo NSAttributedString có vẻ khá tốn kém (chậm) ngay cả với số lượng nhỏ. Đối với hơn 10 bài đăng, mỗi bài viết có thể là độ dài của toàn bộ bài viết sẽ là khủng khiếp + mặc dù DTAttributedTextView hỗ trợ thẻ IMG html (một thẻ nhiều nhất) không hỗ trợ tải hình ảnh từ xa trừ khi bạn chỉ định chiều rộng và chiều cao của chúng thẻ img. Và đối với một diễn đàn nơi một thẻ IMG có thể là một biểu tượng mặt cười (10 * 10) hoặc ảnh chụp màn hình (640 * 960) thì không có cách nào để dự đoán điều đó. (Kể từ khi văn bản này NSAttributedString + HTML, mà bây giờ đổi tên thành DTCoreText, đã thêm hỗ trợ đầy đủ cho <img> thẻ và cải thiện đáng kể!)

  • tế bào Tuỳ chỉnh với một UIWebView trong họ cho mỗi bài đăng?

    Điều này tôi đã xem xét trong một thời gian, tuy nhiên khi đọc this blog post Tôi đã nhận ra sự cố có thể gây ra, Cuộn mượt. Ý tưởng về việc có một ứng dụng gốc cho một trang web là nó là tốt hơn sau đó sử dụng UIWebView đơn giản để xem chủ đề dành cho thiết bị di động của trang web. Nếu ứng dụng bị chậm và giật trong khi cuộn thì tồi tệ hơn không tốt hơn (cũng như tôi cần hiển thị hình ảnh ẩn chế độ xem web như ý kiến ​​của anh ấy sẽ không hoạt động). Ngoài ra UIWebView của cần phải được tạo ra trên các chủ đề chính hoặc họ phá vỡ.

  • Quay lại UIWebView? Bực bội bên cạnh việc lừa đảo thảm hại, (như trong iFans app), nơi bạn chỉ hiển thị văn bản và sau đó nếu họ nhấp vào nó một UIWebView tải với tất cả các hình ảnh đẹp vv ..., lựa chọn duy nhất còn lại dường như là để làm những gì tôi cho rằng ứng dụng TapaTalk có và có toàn bộ giao diện chuỗi dưới dạng UIWebView. Đây không phải là quá xấu vì nó có thể có hiệu suất khá tốt và sẽ cho phép tôi có thể thêm chủ đề được kiểm soát người dùng v.v. nhưng tôi thấy ý tưởng sử dụng UIWebView trong trang web gốc ứng dụng ứng dụng đẩy.

Có ai có bất kỳ kinh nghiệm tạo ứng dụng trợ web như lẽ một facebook client, diễn đàn ứng dụng, hoặc ứng dụng trang web mới mà đã phải hiển thị nội dung từ các trang web (Tôi không thực sự đếm một khách hàng twitter vì nó chỉ phải xử lý các liên kết văn bản & với số lượng nhỏ trên mỗi bài đăng). Hoặc bất kỳ ý tưởng nào về cách tốt nhất để hiển thị nội dung RichText trong ứng dụng iOS?

Bất kỳ ý tưởng của sẽ phải đối phó với rất nhiều:

  • đa màu Text.
  • Phải, trái & Văn bản được căn giữa.
  • Hình ảnh (có kích thước thay đổi).
  • Văn bản in đậm.
  • Văn bản có kích thước khác nhau & phông chữ.
  • Gạch dưới văn bản.
  • Video trên YouTube.
  • Bảng HTML.

Chỉ trong trường hợp câu hỏi thực tế là không phải là rất rõ ràng trong tất cả điều đó, tôi sẽ tóm tắt:

"cách tốt nhất để hiển thị nhiều RichText (định dạng HTML) là gì nội dung cho ứng dụng khách của diễn đàn "

Trả lời

3

Vì vậy, nếu tôi đọc quyền này, bạn muốn bài đăng trên diễn đàn của một chủ đề nhất định là ô của UITableView và các ô cần định dạng phong phú?

Giả sử điều này là chính xác, tôi tưởng tượng mỗi bài đăng sẽ chiếm rất nhiều màn hình (chiều cao ô lớn). Trong trường hợp này, việc có UIWebView dưới dạng một chế độ xem phụ có thể không hiệu quả như bạn nghĩ. UITableView tái sử dụng các tế bào để thực sự chỉ các tế bào hiển thị cần được nạp vào bộ nhớ.

Tôi cũng giả sử bạn có thể truy cập diễn đàn thông qua API, phải không? Trong trường hợp đó, bạn có thể tải trước dữ liệu ngay trước khi tải chế độ xem và UIWebViews sẽ chỉ được sử dụng để định dạng. Bạn thậm chí có thể tải tệp CSS từ gói ứng dụng của mình khi bạn tảiHTMLString vào UIWebView của mình để bạn không tải tệp đó từ máy chủ mỗi lần. Tất cả những gì được nói, nếu bạn có nhiều ô có thể nhìn thấy đồng thời, nó có thể là một câu chuyện khác và tôi có thể chỉ xem xét văn bản thuần trong chỉ số UITableView và chỉ hiển thị định dạng phong phú khi người dùng chạm vào để xem một bài đăng. Điều này cũng có thể tốt hơn từ quan điểm thiết kế vì có một tấn các tế bào được định dạng khác nhau trên màn hình có thể có khả năng kết thúc tìm kiếm một chút cẩu thả.

Ngoài ra, điều này có thể hiển nhiên (đặc biệt vì bạn có vẻ vừa là hiệu suất và thiết kế có ý thức) nhưng vui lòng không sử dụng UIWebView cho các điều khiển giao diện người dùng. Bất cứ lúc nào tôi nhìn thấy một thanh tab UIWebView hoặc thanh điều hướng giả tôi cringe (ack, Netflix). Đối với định dạng mặc dù, rất nhiều lần nó là cách duy nhất để bay nếu bạn đang tải rất nhiều nội dung động từ một máy chủ.

+0

Vâng tôi thực sự không thích các điều khiển HMTL UIKit giả mạo. Cảm ơn câu trả lời, sau khi đọc nhận xét của bạn, tôi đã thử nghiệm có một UIWebView trong một ô xem bảng. Mặc dù nó làm việc khá tốt mỗi cuộc gọi phải tải lại nội dung của nó khi tôi cuộn đến nó và nó khá giật khi cuộn. Vì vậy, tôi sẽ có khả năng sử dụng một UIWebView cho văn bản phong phú (mặc dù được tùy chỉnh với javascript, chính sách bộ nhớ đệm tùy chỉnh và menu ngữ cảnh tùy chỉnh). Tôi thực sự muốn Apple sẽ mang công cụ văn bản OSX sang iOS, với hỗ trợ chỉnh sửa văn bản đa dạng thức. –

+0

Tôi sẽ đợi một lúc để xem có ai đã tạo một ứng dụng tương tự trước khi đăng bài về trải nghiệm thừa kế trước khi đánh dấu câu trả lời này không. –

+0

Sau một vài bài kiểm tra, tôi xin lỗi để nói ** THEO FAR ** tùy chọn có hiệu suất tốt nhất là UIWebView. –

2

NSAttributedString + HTML đã hỗ trợ tải hình ảnh chậm. Xem Demo cho thấy làm thế nào để làm điều đó. Nó khá nhanh nhưng bạn muốn giữ phân tích cú pháp HTML cho nội dung không có trên màn hình.

Chủ yếu phụ thuộc vào giao diện người dùng bạn muốn đạt được. NSAS + HTML dành cho các tình huống mà bạn kiểm soát chất lượng của HTML (tức là vì bạn tự tạo ra nó). Ở đó nó dành cho bạn một mức độ kiểm soát chưa từng thấy đối với phân cấp khung nhìn bởi vì bạn có thể nhúng các chế độ xem tùy chỉnh của riêng mình để hiển thị hình ảnh.

Trong các trường hợp khác mà bạn không thể chắc chắn về chất lượng của HTML bạn phải sử dụng UIWebView và làm việc xung quanh tất cả các hạn chế của nó, một là phải mất một lượng RAM khổng lồ và nó chậm để hiển thị nội dung. Ngoài ra UIWebView không phải là chủ đề an toàn (vì WebKit là không).

Các vấn đề liên quan