Đây là một nhận xét rất quan trọng
Chìa khóa để hiểu tại sao câu trả lời của vitaminwater có ba điều:
- Biết rằng UITextView là một lớp con của lớp UIScrollView
- Hiểu cách ScrollView hoạt động và cách tính nội dung của nó. Để biết thêm xem điều này ở đây câu trả lời và các giải pháp và ý kiến khác nhau của nó.
- Hiểu nội dung kích thước là gì và cách tính của nó. Xem ở đây và ở đây . Nó cũng có thể giúp thiết lập đó
contentOffset
là khả năng gì ngoài:
func setContentOffset(offset: CGPoint)
{
CGRect bounds = self.bounds
bounds.origin = offset
self.bounds = bounds
}
Để biết thêm xem cuộn objc và hiểu cuộn
Kết hợp cả ba lại với nhau, bạn sẽ dễ dàng hiểu rằng bạn cần cho phép nội dung bên trong của TextView hoạt động theo các ràng buộc AutoLayout của textView để điều khiển logic. Gần như thể văn bản của bạn đang hoạt động giống như một UILabel
Để thực hiện điều đó, bạn cần phải vô hiệu hóa cuộn, điều đó có nghĩa là kích thước của scrollView, kích thước của contentSize và trong trường hợp thêm một containerView, thì kích thước của containerView sẽ giống nhau. Khi chúng giống nhau, bạn KHÔNG có cuộn. Và bạn sẽ có . Có nghĩa là bạn không cuộn xuống. Thậm chí không được 1 điểm! Kết quả là textView sẽ được kéo dài ra.0
contentOffset
0
contentOffSet
Nó cũng không có giá trị gì có nghĩa là giới hạn và khung của scrollView giống hệt nhau. Nếu bạn cuộn xuống 5 điểm thì nội dung của bạn sẽ là , trong khi của bạn sẽ bằng0
contentOffset
5
scrollView.bounds.origin.y - scrollView.frame.origin.y
5