无法转换'UInt32'类型的值预期的参数类型'UIFontDescriptorSymbolicTraits'

时间:2016-03-15 15:15:12

标签: 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。但我不知道,该怎么做。 : - (

欢迎任何帮助!

1 个答案:

答案 0 :(得分:1)

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