Странное поведение шрифта для программно созданного UITextView - PullRequest
0 голосов
/ 02 января 2019

Я предпочитаю создавать свои интерфейсы в коде, а не использовать IB, но я не смог изменить размер шрифта созданного мной UITextView.Ничего не работает вообще.Чтобы попытаться отладить проблему, я добавил UITextView к своему основному виду, используя IB, чтобы посмотреть, сработало ли это - и это сработало.Странная вещь в том, что моя программно созданная версия также работала, но только тогда, когда была видна версия IB.Как только я ее удаляю, программно созданная версия перестает работать - размер шрифта не меняется.

Используя черты, я могу фактически отключить созданную IB версию, чтобы она не была установлена ​​и, следовательно, никогда не появлялась, чтовсе еще позволяет программно созданной версии работать.

Кто-нибудь еще видел это?Наличие случайного элемента в IB не конец света, но это расстраивает и такое, что будет трудно объяснить / отладить в будущем.

fullWidthDetailText.isEditable = true
fullWidthDetailText.isSelectable = true
fullWidthDetailText.font = UIFont(name: "Roboto", size: 50)
fullWidthDetailText.adjustsFontForContentSizeCategory = false
fullWidthDetailText.text = "Hello world"
fullWidthDetailText.backgroundColor = UIColor.clear
fullWidthDetailText.textColor = UIColor.white
fullWidthDetailView.addSubview(fullWidthDetailText)

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Возможно, имя шрифта неверное.Я бы ожидал, что это будет что-то вроде "Roboto-Regular", но чтобы быть абсолютно уверенным, напечатайте имена всех доступных шрифтов на вашей консоли и найдите тот, который вы хотите:

for family in UIFont.familyNames.sorted() {
    print("\(family): ", UIFont.fontNames(forFamilyName: family).sorted().joined(separator: ", "))
}

См. Как проверитьесли шрифт доступен в версии iOS? для подробностей.

Обратите внимание, что имена шрифтов обычно не удобны для пользователя, Interface Builder фактически отображает семейство шрифтов .

Если проблема не устранена, см. Добавление пользовательского шрифта в приложение и убедитесь, что вы все сделали правильно.

0 голосов
/ 02 января 2019

Roboto не устанавливается на большинство устройств iOS.Это традиционный шрифт Android, а не шрифт iOS.Так что UIFont(name: "Roboto", size 50) возвращает ноль.Если вы выберете шрифт, установленный на iOS (например, Helvetica, очень близкий к Roboto), я не смогу воспроизвести эту проблему;текст отображается шрифтом 50pt, как и ожидалось.Точно так же .systemFont(ofSize: 50), кажется, работает нормально.

...