Este comentário mais importante
A chave para entender por que a resposta da vitaminwater funciona são três coisas:
- Saiba que UITextView é uma subclasse da classe UIScrollView
- Entenda como o ScrollView funciona e como seu contentSize é calculado. Para mais informações, veja aqui a resposta e suas várias soluções e comentários.
- Entenda o que é contentSize e como é calculado. Veja aqui e aqui . Ele também pode ajudar a essa definição
contentOffset
é provavelmente nada, mas:
func setContentOffset(offset: CGPoint)
{
CGRect bounds = self.bounds
bounds.origin = offset
self.bounds = bounds
}
Para obter mais informações, consulte objc scrollview e compreendendo scrollview
Ao combinar os três, você entenderia facilmente que precisa permitir que o contentSize intrínseco do textView funcione de acordo com as restrições de AutoLayout do textView para conduzir a lógica. É quase como se seu textView estivesse funcionando como um UILabel
Para que isso aconteça, você precisa desativar a rolagem, que basicamente significa o tamanho do scrollView, o tamanho do contentSize e, no caso de adicionar um containerView, o tamanho do containerView será o mesmo. Quando são iguais, você NÃO tem rolagem. E você teria . Ter significa que você não rolou para baixo. Nem um ponto a menos! Como resultado, o textView será todo estendido.0
contentOffset
0
contentOffSet
Também não vale nada, o que significa que os limites e o quadro do scrollView são idênticos. Se você rolar 5 pontos para baixo, seu contentOffset seria , enquanto seu seria igual a0
contentOffset
5
scrollView.bounds.origin.y - scrollView.frame.origin.y
5