Вопрос говорит сам за себя, использование boundingRect NSString с UITextView дает неправильный результат. То же самое отлично работает с UILabel.
Пожалуйста, скачайте этот образец игровой площадки с здесь
Вот мои наблюдения:
В UITextView добавлен отступ по умолчанию, который может вызвать проблемы при расчете размера и пользовательском интерфейсе, как показано здесь , поэтому я удалил заполнение по умолчанию из textview, следуя вышеописанному подходу.
После этого я установил высоту UITextView с помощью boundingRect с пользовательским шрифтом, таким как Helvetica, он дает неправильное значение. Некоторая часть текста не отображается.
Теперь, если я просто поменяю шрифт на системный, то он чудесным образом даст правильное значение для UITextView.
В обоих случаях boundingRect дает правильное значение для UILabel, поэтому, если я просто поменяю UITextView на UILabel, тогда размер будет идеальным, а текст будет отличным.
Поэтому мой вопрос заключается в том, почему boundingRect дает неверный размер для UITextView при использовании настраиваемого шрифта, но то же самое работает для UILabel, а при использовании системного шрифта он также дает правильное значение для UITextView.
PS: Позже я обнаружил, что метод textView sizeThatFits, похоже, дает правильный результат для размера textView. Тем не менее, все еще остается вопрос, почему boundingRect не работает с UITextView и пользовательским шрифтом?
По предложению Мэтта: Он удалил свой ответ, хотя: (
Я попытался использовать атрибутивную строку со шрифтом, а не устанавливать свойство шрифта Textview напрямую, что мне кажется немного странным, так как яблоко не раскрывает свойство шрифта, если оно не работает.
Тем не менее, я попытался использовать attribuString, и вычисление высоты на основе этого все еще не работает. Проверьте здесь