2014-04-17 13 views
9

Tôi đang định cỡ động độ cao của UITextView và chiều cao của UITableViewCell nó được nhúng khi nội dung của nó thay đổi. Nhưng tôi cũng có khả năng dán các bit văn bản được xác định trước.UITextView không cập nhật nội dung của nóSize

Như dán điều này xảy ra theo chương trình, vấn đề là, rằng sau khi thêm chút văn bản đã chọn để văn bản 's UITextView và gọi UITableView của tôi để cập nhật chiều cao tế bào của nó, là UITextView vẫn chưa được cập nhật contentSize của nó, mà tôi sử dụng để tính chiều cao của ô.

Có cách nào để buộc một UITextView để cập nhật nó contentSize, sau khi tôi lập trình thêm văn bản vào nó?

+0

Đối với người xem trong tương lai, tôi tin câu trả lời thực sự cho câu hỏi này là 'textView.sizeToFit()'. Tôi đang sử dụng điều này trong Swift 2.0 và nó hoạt động hoàn hảo, giống như @dkaisers được yêu cầu, miễn là bạn đang sử dụng AutoLayout. – kbpontius

Trả lời

19

Bạn có thể sử dụng sizeThatFits: để nhận được kích thước chính xác.

CGFloat height = ceilf([textView sizeThatFits:textView.frame.size].height); 

Dưới đây là một thành phần mã nguồn mở phổ biến mà làm cho việc sử dụng nó để đạt được thay đổi kích thước động dựa trên nội dung TextView:   https://github.com/HansPinckaers/GrowingTextView

+1

Cảm ơn, công trình này hoàn hảo! – dkaisers

2

phiên bản Swift của câu trả lời:

var newTextViewHeight = ceil(textView.sizeThatFits(textView.frame.size).height) 
textView.frame.size.height = newTextViewHeight 

này đoạn mã cũng có thể hữu ích nếu bạn muốn cập nhật phần giám sát của UITextView

textView.superview?.frame.size.height = textView.contentSize.height + 10 
Các vấn đề liên quan