Можно ли настроить UITextField и UITextView, чтобы сделать шрифты одинаковыми, или они просто разные?

Если я создаю UILabel, UITextField и UITextView, то установите для них одинаковые стили макета - например, цвет фона, белый текст и шрифт Courier размером 18 - UILabel и UITextField выглядят одинаково, тогда как UITextView выглядит иначе - шрифт выглядит тоньше.

Я сделал скриншот проблемы, но у меня нет достаточной репутации, чтобы поместить ее в строку. Вместо этого нажмите здесь, чтобы увидеть мой пример в действии

Я уверен, что где-то читал, что UITextView использует другой механизм рендеринга для шрифтов (возможно, CoreText?), но независимо от того, какие элементы управления определенно выглядят по-другому.

Итак, есть ли способ, которым UITextViews можно сделать для отображения своих шрифтов, таких как UITextFields/UILabels, или наоборот?

Ответ 1

Увлекательная проблема. До сих пор я не смог воспроизвести его ни с чем, кроме Курьера, но это определенно происходит в Courier. Я бы открыл дефект на bugreporter.apple.com.

Чтобы помочь вам двигаться дальше, я рекомендую переключиться на Courier New, где я не вижу этой проблемы и должен быть очень близок к вашей первоначальной цели.

Ответ 2

У меня была аналогичная проблема с шрифтом Raleway. Я использовал Raleway-Bold.ttf(имя PostScript: Raleway-Bold) и Raleway-Regular.ttf(имя PostScript: Raleway) в своем приложении. Когда два из этих шрифтов были добавлены в проект, я не смог нарисовать Raleway-Bold в UITextView (либо путем установки шрифта программно, либо в IB с помощью FontReplacer). Я попал в Raleway-Regular в UITextView, без проблем с UILabel. Когда я удалил Raleway-Regular, проблем не было как в текстовом виде, так и в метке.

Что мне нужно было сделать, чтобы рисовать Raleway-Bold в UITextView, но не уходить из Regular, было изменение имени PostScript Raleway-Regular, которое было просто Raleway для другого имени. В моем случае это был Raleway-Reg. Это было исправление:)