Tôi có một số văn bản cần được hiển thị trong ứng dụng của tôi. Văn bản chứa các liên kết cần tương tác. Tôi đã thử một vài giải pháp để tạo liên kết có thể nhấn vào trong UITextViews
và UILabels
.Tự động định kích thước một UIWebView dựa trên kích thước phông chữ nội dung
UITextView
liên kếtUITextView
cung cấp máy dò dữ liệu mà nhặt trên URL và làm cho họ tappable.- Không thể sử dụng được với tôi vì liên kết sẽ chỉ mở ra bên ngoài trong Safari, không có cách nào kiểm soát và làm những gì tôi muốn với liên kết.
UILabel
liên kết sử dụng "Nhãn Fancy" (http://furbo.org/2008/10/07/fancy-uilabels/)- Hầu hết các giải pháp hoàn hảo, cung cấp phát hiện các liên kết và một cách để người dùng xem và khai thác chúng nội tuyến và đem lại cho tôi toàn quyền điều khiển phải làm gì với một liên kết khi nó được nhấn.
- Hiện không sử dụng được vì việc triển khai sử dụng
UIButton
s để che phủ các liên kết và chúng không được bao bọc bằng văn bản trên các liên kết dài.
Cuối cùng tôi đã quyết định sử dụng chế độ xem web. Tôi chuyển văn bản vào webview và xây dựng một trình bao bọc HTML cơ bản xung quanh nó và mọi thứ đều hunky-dory. Đây là phương pháp tương tự mà Twitter cho iPhone (hay còn gọi là Tweetie) sử dụng.
Vấn đề duy nhất tôi có bây giờ là nếu văn bản quá dài, thì webview sẽ nén luồng và cuộn để xem văn bản được cắt bớt. Thứ hai nếu văn bản quá ngắn, thì có một vùng không gian bị lãng phí lớn bên dưới chế độ xem web.
Không giống như Tweetie, tôi có nhiều nội dung hơn bên dưới chế độ xem web và tôi muốn tránh tràn hoặc không gian bị lãng phí. Chế độ xem web là một chế độ xem con của chế độ xem cuộn, vì vậy nội dung của toàn bộ trang có thể phát triển mà không có các bản xem trước cần phải cuộn.
Có cách nào tôi có thể tự động thay đổi kích thước chế độ xem web sao cho nó chỉ là chiều cao phù hợp dựa trên nội dung của nó?
Tôi đã thử nhiều điều cho đến nay, không có gì có vẻ là một giải pháp vững chắc:
sizeToFit
không làm gì (hoặc nhiều khả năng, chỉ cần thiết lập kích thước với những gì khung hiện nay là anyway).sizeThatFits:
trả về kích thước hiện tại của nó.NSString
'ssizeWithFont:constrainedToSize:
không khả thi vìUIWebView
vàUIFont
có các biểu diễn khác nhau về kích thước 18 là bao nhiêu.- Chỉ cần xây dựng vào thời điểm này. Trong thử nghiệm của tôi, tôi đã tìm thấy rằng một webView với một scaleFactor là 1.0 và
scalesPageToFit
được đặt thànhNO
và kích thước phông chữ cho toàn bộ trang được 13.5pt (trong CSS) hiển thị văn bản có cùng kích thước vớiUILabel
vớiUIFont
kích thước 18. Nếu bất cứ ai có thể giải thích rằng tôi sẽ biết ơn.
- Chỉ cần xây dựng vào thời điểm này. Trong thử nghiệm của tôi, tôi đã tìm thấy rằng một webView với một scaleFactor là 1.0 và
- Ngoài ra, trong webView tôi đang sử dụng thuộc tính CSS
word-wrap: break-word;
để ngăn webView di chuyển theo chiều ngang với các từ hoặc URL dài. Do đó, hành vi gói giữa webView vàUILineBreakModeWordWrap
hoàn toàn khác nhau. Ngay cả khi sử dụngUILineBreakModeCharacterWrap
cũng không tạo ra kết quả tương tự.
Hoặc không có cách nào để làm điều này, hoặc tôi đang câm và thiếu cái gì đó đơn giản. Nếu bất cứ ai có thể cung cấp một số cái nhìn sâu sắc, tôi sẽ rất biết ơn. Cảm ơn.
Có vẻ tốt, tôi sẽ thử khi tôi cần làm điều này. – Jasarien