首页 > 解决方案 > 以编程方式创建的 UITextView 的奇怪字体行为

问题描述

我更喜欢在代码中创建我的界面而不是使用 IB,但是我无法更改我创建的 UITextView 的字体大小。什么都没有。为了尝试调试问题,我使用 IB 在我的主视图中添加了一个 UITextView 以查看它是否有效 - 它确实有效。奇怪的是,我以编程方式创建的版本也可以工作,但只有当 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)

标签: swiftinterface-builderuitextview

解决方案


字体名称可能不正确。我希望它类似于"Roboto-Regular"但绝对可以肯定的是,将所有可用字体的名称打印到您的控制台并找到您想要的字体:

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

请参阅如何检查字体是否在 iOS 版本中可用?详情。

请注意,字体名称通常不是用户友好的,Interface Builder 实际上会显示字体系列

如果您仍然遇到问题,请参阅向您的应用添加自定义字体 并验证您是否已正确完成所有操作。


推荐阅读