2017-05-10 120 views
1

我最近注意到,作爲NSAttributedString的超文本文本不再適用於iOS 10.3。Superscript屬性不再適用於iOS 10.3

有沒有其他人注意到了這一點?此代碼用於工作,使我的註冊標誌標:

func setSuperScript(forSuperScriptString superScriptString:String, withFont font:String, atSize size:CGFloat){ 

    if self.text != nil { 

     let mutableAttString:NSMutableAttributedString = NSMutableAttributedString(string:self.text!) 

     for (i,c) in self.text!.characters.enumerated() { 

      if c == Character(superScriptString) { 

       let range = NSRange(location:i,length:1) 

       // for each occurence of the character to superscript 
       mutableAttString.addAttribute(NSFontAttributeName, value: UIFont(name: font, size: size)!, range: range) 
       mutableAttString.addAttribute(kCTSuperscriptAttributeName as String, value:1, range: range) 
      } 
     } 

     self.attributedText = mutableAttString 
    } 
} 

該行上運行iOS的設備10.2作品mutableAttString.addAttribute(kCTSuperscriptAttributeName as String, value:1, range: range)但確實在iOS的最新版本。

+0

什麼* *究竟不再工作?請顯示一些以前可用的Swift(?)代碼,並且不再工作。 – luk2302

+2

https://openradar.appspot.com/31321619? – Larme

+0

那不只是我!謝謝。 –

回答

0

我有這樣的代碼來右上角的貨幣標籤美分,它工作得很好,因爲iOS的8至10.3.1:

func formatLabelToCurrency(label: UILabel)-> UILabel { 
    var decimalSeparator: String = "." 
    let font:UIFont? = UIFont(name: "Helvetica", size:20) 
    let fontSuper:UIFont? = UIFont(name: "Helvetica", size:10) 
    let attString:NSMutableAttributedString = NSMutableAttributedString(string: label.text!, attributes: [NSFontAttributeName:font!]) 
    attString.setAttributes([NSFontAttributeName:fontSuper!,NSBaselineOffsetAttributeName:10], range: NSRange(location:(label.text?.index(of: decimalSeparator))!,length:3)) 
    label.attributedText = attString; 
    return label 
} 
+0

好的修復。我用這個來解決我的問題。但是,這不是答案,它似乎確實是iOS 10.3中的一個錯誤或者是棄用。 –

+0

是的,當屬性應用於字符串範圍時,這是iOS 10.3中的一個錯誤。它也發生在其他屬性上。 – Koen