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

时间:2017-07-13 12:01:53

标签: 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)

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

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

1 个答案:

答案 0 :(得分:10)

您对UIFont(name:,size:)的来电可能会返回nil。 您是否添加了自定义字体properly

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