[NSNull pointSize]:无法识别的选择器在使用自定义字体时发送到swift3中的实例

Che*_*wra 1 ios swift3 xcode8

我正在尝试自定义UISegmented控件的字体,我使用以下代码,如下所示:

let selectedfont = UIFont(name:"Roboto-Bold", size:22)
let unselectedfont = UIFont(name:"Roboto-Regular", size:22)

let normalTextAttributes: [String: Any] = [
  NSForegroundColorAttributeName: UIColor(red: 0.60, green: 0.60, blue: 0.60, alpha: 1.0),
  NSFontAttributeName: unselectedfont as Any
]
let selectedTextAttributes: [String: Any] = [
  NSForegroundColorAttributeName: UIColor.black,
  NSFontAttributeName: selectedfont as Any
]

self.setTitleTextAttributes(normalTextAttributes, for: UIControlState())
self.setTitleTextAttributes(selectedTextAttributes, for: .highlighted)
self.setTitleTextAttributes(selectedTextAttributes, for: .selected)
Run Code Online (Sandbox Code Playgroud)

但应用程序崩溃显示: 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSNull pointSize]:无法识别的选择器

这是什么问题?任何帮助都会得到满足.

fpg*_*503 11

你的电话UIFont(name:,size:)很可能会回来nil.您是否正确添加了自定义字体?

  1. 在info.plist中注册字体,添加"应用程序提供的字体"条目.放置字体文件名,而不是字体名称.喜欢font.ttf
  2. 转到项目导航器上的项目,单击项目名称并转到"构建阶段"然后向下看"复制捆绑资源"转到底部,有很多文件并搜索"+"符号.弹出窗口将打开您的项目文件.搜索您的字体文件并将其添加到捆绑包中.
  3. 最后检查字体名称.在代码中使用它时,必须使用字体名称,而不是文件名.要知道字体名称,请在Finder中双击字体文件,将打开一个显示字体的窗口.检查窗口标题,这是您必须使用的字体的名称.