xcode - 无法将类型 'UInt32!' 的值转换为预期参数类型 'UIFontDescriptorSymbolicTraits'

标签 xcode swift textkit

我仍在尝试将 TextKit 从 Objective-C 转换为 Swift。它让我(和你?)疯狂:-( 修复了一些问题后,现在我在使用粗体(和斜体)字体时遇到了问题:

enter image description here

func addOrRemoveFontTraitWithName(traitName: String, andValue traitValue: UInt32, andRange selectedRange: NSRange) {
    
    let currentAttributesDict : NSDictionary! = self.textView.textStorage.attributesAtIndex(selectedRange.location, effectiveRange: nil)
    let currentFont : UIFont = currentAttributesDict .objectForKey(NSFontAttributeName) as! UIFont
 ...
    var existingTraitsWithNewTrait : UInt32! = nil
    var changedFontDescriptor : UIFontDescriptor! = nil
    if  fontNameAttribute.rangeOfString(traitName).location == NSNotFound {
        existingTraitsWithNewTrait = fontDescriptor.symbolicTraits.rawValue | traitValue
        changedFontDescriptor = fontDescriptor.fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits.TraitBold)   
    } else {
        existingTraitsWithNewTrait =  fontDescriptor.symbolicTraits.rawValue & ~traitValue
        changedFontDescriptor = 
            fontDescriptor.fontDescriptorWithSymbolicTraits(existingTraitsWithNewTrait) // !!!!
   }

在最后一行我收到错误 无法转换“UInt32!”类型的值预期参数类型“UIFontDescriptorSymbolicTraits”

我必须将 UInt32 转换为 UIFontDescriptorSymbolicTraits 吗?另一种方法是使用.rawValue。但我不知道该怎么做。 :-(

欢迎任何帮助!

最佳答案

尝试用UIFontDescriptorSymbolicTraits(rawValue:existingTraitsWithNewTrait)代替错误行中的existingTraitsWithNewTrait

关于xcode - 无法将类型 'UInt32!' 的值转换为预期参数类型 'UIFontDescriptorSymbolicTraits',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36015218/

相关文章:

ios - 初始化 'UnsafePointer<Int>' 导致指针悬空

ios - NSAttributedString 报告 UITextView sizeThatFits 和 boundingRectWithSize 的大小不正确,并设置了正确的选项

objective-c - Xcode 警告 : Unused Entity Issue: Unused Variable

javascript - 在不启动 Xcode 的情况下运行 React Native 应用程序?

swift - 如何让搜索栏在移动到另一个VC时立即消失

ios - 为 iOS 7 创建一个文本编辑器

ios - 如何使用 Text Kit 查找单行文本的高度

objective-c - 仪器中出现奇怪的内存泄漏

iphone - 使用 IOS 供应门户进行配置时出现问题?

ios - 访问数组中对象的属性 - Swift 3.0