String's boundingRect дает неверный результат для UITextView - PullRequest
0 голосов
/ 15 июня 2019

Вопрос говорит сам за себя, использование boundingRect NSString с UITextView дает неправильный результат. То же самое отлично работает с UILabel.

Пожалуйста, скачайте этот образец игровой площадки с здесь

Вот мои наблюдения:

  1. В UITextView добавлен отступ по умолчанию, который может вызвать проблемы при расчете размера и пользовательском интерфейсе, как показано здесь , поэтому я удалил заполнение по умолчанию из textview, следуя вышеописанному подходу.

  2. После этого я установил высоту UITextView с помощью boundingRect с пользовательским шрифтом, таким как Helvetica, он дает неправильное значение. Некоторая часть текста не отображается.

  3. Теперь, если я просто поменяю шрифт на системный, то он чудесным образом даст правильное значение для UITextView.

В обоих случаях boundingRect дает правильное значение для UILabel, поэтому, если я просто поменяю UITextView на UILabel, тогда размер будет идеальным, а текст будет отличным.

Поэтому мой вопрос заключается в том, почему boundingRect дает неверный размер для UITextView при использовании настраиваемого шрифта, но то же самое работает для UILabel, а при использовании системного шрифта он также дает правильное значение для UITextView.

PS: Позже я обнаружил, что метод textView sizeThatFits, похоже, дает правильный результат для размера textView. Тем не менее, все еще остается вопрос, почему boundingRect не работает с UITextView и пользовательским шрифтом?

По предложению Мэтта: Он удалил свой ответ, хотя: (

Я попытался использовать атрибутивную строку со шрифтом, а не устанавливать свойство шрифта Textview напрямую, что мне кажется немного странным, так как яблоко не раскрывает свойство шрифта, если оно не работает. Тем не менее, я попытался использовать attribuString, и вычисление высоты на основе этого все еще не работает. Проверьте здесь

...