Я установил UITextView
и UILabel
для использования настраиваемого шрифта. (Это вертикально отраженный монгольский шрифт, но я также включил текст на английском языке, чтобы вы могли видеть эффект.) Слова отображаются в интерфейсе Builder, но в симуляторе большинство символов в UITextView
являются пустыми. Как ни странно, символы в UILabel
должны корректно отображаться в симуляторе.
Как мне их отобразить в UITextView
?
Примечания:
- Я использую Xcode версии 6.3.2. Из this SO Q & A Я знаю, что пользовательские шрифты должны работать с Xcode 6 в IB.
- Я добавил файл шрифта в проект и выбрал его из пользовательского списка шрифтов как для
UITextView
, так и дляUILabel
. - В моем проекте
Info.plist
я добавил ключ "Шрифты, предоставленные приложением", и добавил к нему свой собственный шрифт. -
Этот вопрос является очень похожим (но отличается тем, что он не упоминает проблему
UITextView
иUILabel
). На момент написания этой статьи ОП для этого вопроса не указывал, помогал или нет. Я выполнил код чтобы ответить, чтобы подтвердить, что мой шрифт действительно находится в комплекте. Я получил следующий результат, который подтверждает, что он находится в комплекте, так что все еще не решает мою проблему.Family : ChimeeWhiteMirrored Font : ChimeeWhiteMirrored
Кто-нибудь видит мою ошибку или имеет какие-то другие идеи?
Update
Получив @darkheartfelt downvote и comment к моему ответу ниже, я воссоздал свою оригинальную проблему, думая, может быть, я что-то пропустил. Хотя в iOS 9 шрифт выглядит несколько иначе в симуляторе, основная проблема все еще существует: он выглядит нормально в IB, но не в симуляторе.
Проблема может быть воспроизведена следующим образом (с использованием Xcode 7.1.1):
- Запустите новый проект с одним представлением.
- Добавить шрифт в проект (можно загрузить здесь из связанного проекта github)
- В файле Info.plist добавьте "Шрифты, предоставленные приложением" с именем шрифта "ChimeeWhiteMirrored.ttf".
- Подтвердите, что целевой ресурс "Copy Bundle Resources" содержит ChimeeWhiteMirrored.ttf.
- Добавьте
UITextView
в раскадровку. - В инспекторе IB Attributes вставьте следующий текст:
1-10: one two three four five six seven eight nine ten
- В инспекторе атрибутов IB задайте шрифт Custom и семейству ChimeeWhiteMirrored.
Это воспроизводит проблему для специальных символов и, как я описал в своем ответе ниже, единственное, что я нашел, чтобы решить эту проблему, чтобы установить шрифт в код.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
// set custom font
textView.font = UIFont(name: "ChimeeWhiteMirrored", size: (textView.font?.pointSize)!)
}
}
Если я ошибаюсь или что-то не хватает, пожалуйста, дайте мне знать. До тех пор мне придется продолжить использовать мой принятый ответ ниже.