我已经设置了 aUITextView
和 aUILabel
以使用自定义字体。(它是垂直镜像的蒙古字体,但我还包括了英文文本,以便您可以看到效果。) 文字显示在界面生成器中,但在模拟器中,大多数字符UITextView
只是空框。奇怪的是,在UILabel
模拟器中确实显示正确的字符。
我如何让它们也显示在其中UITextView
?
笔记:
- 我正在使用 Xcode 版本 6.3.2。从这个 SO Q&A我知道自定义字体应该与 IB 中的 Xcode 6 一起使用。
- 我已将我的字体文件添加到项目中,并从自定义字体列表中
UITextView
为UILabel
. - 我在我的项目中添加了键“应用程序提供的字体”,
Info.plist
并向其中添加了我的自定义字体。 这个问题是一个非常相似的问题(但不同,因为它没有提到
UITextView
andUILabel
问题)。在撰写本文时,该问题的 OP 尚未表明投票最多的答案是否有帮助。我运行了该答案中的代码以确认我的字体确实在捆绑包中。我得到了以下结果,它确认它在捆绑包中,所以仍然不能解决我的问题。Family : ChimeeWhiteMirrored Font : ChimeeWhiteMirrored
有没有人看到我的错误或有任何其他想法?
更新
在收到@darkheartfelt 的反对票并在下面对我的回答发表评论后,我重新创建了我原来的问题,以为我可能错过了一些东西。尽管在 iOS 9 中字体在模拟器中的显示有所不同,但基本问题仍然存在:在 IB 中看起来还可以,但在模拟器中却不行。
该问题可以重现如下(使用 Xcode 7.1.1):
- 开始一个新的单视图项目。
- 将字体添加到项目中(可以从相关的 github 项目在这里下载)
- 在 Info.plist 文件中添加“应用程序提供的字体”,字体名称为“ChimeeWhiteMirrored.ttf”。
- 确认目标的“Copy Bundle Resources”包含 ChimeeWhiteMirrored.ttf。
UITextView
在情节提要中添加一个。- 在 IB 属性检查器中粘贴以下文本:
1-10: one two three four five six seven eight nine ten
- 在 IB 属性检查器中,将字体设置为自定义,将系列设置为 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)!)
}
}
如果我错了或遗漏了什么,请告诉我。在那之前,我将不得不继续使用下面我接受的答案。