Ios 无法添加字体为Avenir Next CONNECT[Swift 3]的属性字符串
对于上述代码,我得到以下错误: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[\u SwiftValue\u isDefaultFace]:未识别的选择器已发送到实例0x60800046930” 如果我将NSFontAttributeName更改为UIFont.boldSystemFont(大小:20),我可以看到粗体文本。 另外,在添加NSUnderlineStyleAttributeName时,我根本看不到任何文本。 如何解决此问题?有两件事:Ios 无法添加字体为Avenir Next CONNECT[Swift 3]的属性字符串,ios,swift,uitextview,nsattributedstring,Ios,Swift,Uitextview,Nsattributedstring,对于上述代码,我得到以下错误: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[\u SwiftValue\u isDefaultFace]:未识别的选择器已发送到实例0x60800046930” 如果我将NSFontAttributeName更改为UIFont.boldSystemFont(大小:20),我可以看到粗体文本。 另外,在添加NSUnderlineStyleAttributeName时,我根本看不到任何文本。 如何解决此问题?有两
- 您不能将可选值传递到需要非空
值的位置id
属性:
参数在内部转换为NSDictionary
,其值不能为零。但是UIFont.init(名称:size:)
是一个可失败的初始值设定项,因此其返回类型是可选的。在Swift 3.0.0中,Swift在将其转换为非空id
时生成类型为\u SwiftValue
的实例。并将其存储在属性中。这在Objective-C方面是完全无用的。(即使实际值不是零,也会发生这种情况。)
(Swift 3.0.1改进了这种情况的某些部分。)
- 无法将Swift枚举传递到需要
id
值的位置
NSUnderlineStyle.byWord是一个Swift枚举。在Swift 3中,Swift在将其转换为id
时生成类型为\u SwiftValue
的实例
(Swift 3.0.1没有改善这种情况。)
要解决上述两个问题,您需要编写如下内容:
let s = NSAttributedString(string: "Percentage", attributes: [NSFontAttributeName : UIFont(name : "Avenir Next Condensed", size : 20), NSUnderlineStyleAttributeName : NSUnderlineStyle.byWord])
textView.attributedText = s
两件事:
- 您不能将可选值传递到需要非空
id
值的位置
属性:
参数在内部转换为NSDictionary
,其值不能为零。但是UIFont.init(名称:size:)
是一个可失败的初始值设定项,因此其返回类型是可选的。在Swift 3.0.0中,Swift在将其转换为非空id
时生成类型为\u SwiftValue
的实例。并将其存储在属性中。这在Objective-C方面是完全无用的。(即使实际值不是零,也会发生这种情况。)
(Swift 3.0.1改进了这种情况的某些部分。)
- 无法将Swift枚举传递到需要
id
值的位置
NSUnderlineStyle.byWord是一个Swift枚举。在Swift 3中,Swift在将其转换为id
时生成类型为\u SwiftValue
的实例
(Swift 3.0.1没有改善这种情况。)
要解决上述两个问题,您需要编写如下内容:
let s = NSAttributedString(string: "Percentage", attributes: [NSFontAttributeName : UIFont(name : "Avenir Next Condensed", size : 20), NSUnderlineStyleAttributeName : NSUnderlineStyle.byWord])
textView.attributedText = s
let font=UIFont(名称:“Avenir Next Condensed”,大小:20)
返回零?尝试使用AvenirNextCondensed Regular
代替名称(您必须使用PostScript名称)let font=UIFont(名称:“Avenir Next Condensed”,大小:20)
返回零?尝试使用AvenirNextCondensed Regular
代替名称(您必须使用PostScript名称)