В нашем проекте мы используем нестандартные шрифты. Он хорошо работает в Xcode 5. В Xcode 6 он работает с обычным текстом, приписывая строку в коде. Но все эти приписанные строки, установленные в раскадровке, возвращаются к Helvetica при запуске на симуляторе или устройстве, хотя в раскадровке они выглядят нормально.
Я не уверен, что это ошибка Xcode 6 или iOS 8 SDK, или способ использования пользовательских шрифтов изменен в Xcode 6 / iOS 8?
Ответы:
Исправление для меня заключалось в использовании
IBDesignable
класса:Предоставляя вам это в Интерфейсном Разработчике:
Вы можете настроить атрибутную строку так же, как обычно, но вам придется снова установить размер шрифта и семейство шрифтов в новых доступных свойствах.
Поскольку Interface Builder по умолчанию работает с настраиваемым шрифтом, это приводит к тому, что вы видите то, что получаете , что я предпочитаю при создании приложений.
Заметка
Причина, по которой я использую это вместо простой версии, заключается в том, что я устанавливаю свойства атрибутированной метки, такие как межстрочный интервал, которые недоступны при использовании простого стиля.
источник
@IBInspectable
временно используем атрибуты вместо шрифта и размера. У нас естьmarkdownText
свойство, потому что в большинстве случаев мы используем строку с атрибутами для полужирного или подчеркнутого текста. Затем проанализируйте текст уценки на атрибутивную строку с информацией о шрифте и размере, установленной для обычного текста.Самый простой ответ - перетащить шрифты в FontBook. Если шрифты находятся в вашем проекте, но отсутствуют в FontBook вашего компьютера, IB иногда не может найти их. Странно, но несколько раз мне удавалось.
источник
Вы можете добавлять собственные шрифты в книгу шрифтов.
Шаг 1 : нажмите «Управление шрифтами». Он открывает книгу шрифтов.
Шаг 2 : Щелкните плюс и добавьте шрифты.
В следующий раз, когда вы нажмете на шрифт с соответствующим текстом, новый добавленный шрифт также отобразится в списке. Но убедитесь, что ваш собственный шрифт добавлен в info.plist и ресурсы пакета.
источник
Благодаря этой теме я пришел к такому решению:
источник
Мое решение - это небольшая работа. Настоящее решение для Apple - исправить Interface Builder.
С его помощью вы можете пометить весь полужирный и курсивный текст в построителе интерфейса с помощью системного шрифта, а затем во время выполнения визуализировать свой собственный шрифт. Не во всех случаях может быть оптимальным.
На основе этого поста
источник
Я боролся с этой ошибкой: UILabel правильно отображается в IB с пользовательским шрифтом, но не отображается правильно на устройстве или симуляторе (шрифт включен в проект и используется в простых UILabels).
Наконец нашел Attributed String Creator в (Mac) App Store. Создает код для размещения в вашем приложении в нужном месте. Фантастика. Я не создатель, просто счастливый пользователь.
источник
Возникла та же проблема: шрифт атрибута, установленный для TextView в раскадровке, не работал во время выполнения с XCode 6.1 и iOS 8 SDK.
Вот как я решил эту проблему, может быть для вас обходной путь:
откройте инспектор атрибутов вашего текстового представления, измените текст на "Обычный"
нажмите на крестик, чтобы удалить "wC hR" (красный внизу)
измените текст на «Приписанный», а затем вы можете установить шрифт и размер текста.
источник
wC hR
свойств не задано, ни,UILabel
ниUITextView
.Возникла та же проблема: шрифт атрибута для UILabel в раскадровке не работал во время выполнения. Использование этого UIFont + IBCustomFonts.m работает для меня https://github.com/deni2s/IBCustomFonts
источник
Попробуйте, это сработает
В моем случае, когда я пытаюсь установить «Silversky Technology» в качестве атрибутивного текста для метки из построителя интерфейса, он не отображается, когда я запускаю в симуляторе, но отображается в построителе интерфейса. Итак, я использовал один трюк: сделал шрифт Silversky на 1 пиксель больше, чем текст Technology.
У текста атрибута есть проблема с тем же размером шрифта, поэтому измените размер 1 слова, эта штука работает со мной.
Может быть, это ошибка xcode, но этот трюк у меня работает.
источник
Та же проблема.
Решено: просто отметьте "Выбираемый" в TextView. Без этого у меня стандартный системный шрифт.
источник
Дважды щелкните и установите шрифт в систему. Он будет работать (Xcode 8.2)
источник
Решение @Hamidptb работает, убедитесь, что вы получили правильное имя шрифта (после добавления его в книгу шрифтов)
Откройте приложение Font Book, перейдите к своему шрифту и нажмите Command + I. Имя PostScript - это имя шрифта, которое вы хотите здесь использовать:
UILabel.appearance (). Font = UIFont (имя: " PostScriptName ", размер: 17)
источник
Я пытался получить ячейки tableView с текстом, имеющим несколько абзацев. Строки с атрибутами, казалось, были способом получить дополнительное пространство между абзацами (что-то немного приятнее, чем два перевода строки в строку). Я наткнулся на этот и другие сообщения, когда обнаружил, что настройки IB не применяются во время выполнения, когда вы хотите поместить другой текст в ячейку.
Главное, что я придумал, - это добавить расширение к String (используя Swift) для создания атрибутированной строки с определенными характеристиками. В данном примере используется шрифт Marker Felt, так как его легко отличить от Helvetica. В примере также показан небольшой дополнительный интервал между абзацами, чтобы сделать их более отличными друг от друга.
Затем в моем настраиваемом tableViewCell вы отправляете ему нужный текст, и он преобразует его в строку с атрибутами в UILabel.
В контроллере представления с tableView вы должны зарегистрировать свою ячейку в viewDidLoad () - я использовал перо, поэтому что-то вроде:
Чтобы ячейка определяла, какой высоты она должна быть, создайте ячейку-прототип, которая используется для получения информации о размере и никогда не добавляется в tableView. Итак, в переменных вашего контроллера представления:
Затем в (возможно, переопределите - в зависимости от вашего контроллера представления) heightForRowAtIndexPath:
В приведенном выше коде prototypeCell будет заполнен при первой необходимости. Затем prototypeCell используется для определения высоты ячейки после прохождения процесса автоматического изменения размера. Вам нужно будет округлить высоту с помощью функции ceil (). Я также добавил дополнительный фактор выдумки.
Последний бит кода - это то, как вы настраиваете текст для ячейки. В этом примере просто:
Кроме того, вот снимок пера. Прикрепил метку к краям ячейки (с желаемым полем), но использовал ограничение «Больше или равно» с приоритетом ниже «Обязательный» для нижнего ограничения.
Установите для метки шрифт «Приписанный». Фактический шрифт IB не имел значения.
Результат в таком случае:
источник
В случае атрибутированной строки вы можете добавить собственный шрифт в список шрифтов как - Щелкните значок шрифта, появится следующий диалог. В следующем диалоге вы можете добавить свою собственную категорию или существующую категорию для пользовательского шрифта. диалоговое окно с атрибутированным шрифтом
После нажатия на « Управление шрифтами» открывается следующий диалог выбора категории в созданной или существующей. Щелкните знак +, чтобы добавить шрифт в категорию. Диалог управления шрифтом
источник
это простое и быстрое решение, и это работает в моем случае. это решение добавляет строку кода в функцию didFinishLaunchingWithOptions в файле AppDelegate.swift:
для textViews :
для этикеток :
а для остального UiView вроде этих двух ☝️
источник
Для тех, кто применяет пользовательские шрифты к строке с атрибутами в коде: попробуйте установить его
viewDidLayoutSubviews
. Моя ошибка заключалась в том, что это было сделаноviewDidLoad
, это не будет применяться там.источник