2016-08-24 17 views
2

私は私の手でこのコードを持っている:太字をNSMutableStringの一部にするにはどうすればいいですか?

if let text = trimText?.mutableCopy() as? NSMutableString { 
    text.insertString("\(prefix) ", atIndex: 0) 
    textStorage.replaceCharactersInRange(range, withString: text as String) 
} 

私のように私のtextを変更しようとすると:

text = attributedTextFunc(text) 

func attributedTextFunc(str: NSString) -> NSAttributedString { 

    var attributedString = NSMutableAttributedString(string: str as String, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(15.0)]) 

    let boldFontAttribute = [NSFontAttributeName: UIFont.boldSystemFontOfSize(15.0)] 

    attributedString.addAttributes(boldFontAttribute, range: str.rangeOfString("More")) 

    return attributedString 
} 

、私はこのエラーを取得:

Cannot assign value of type 'NSAttributedString' to type 'NSMutableString' 

どうすれば太字にすることができますか?

答えて

2

NSAttributedStringをテキストに変換することはできません。それは2つの異なるタイプです。

文字列はNSAttributedStringからサブクラス化されません。

あなたは設定する必要があります。

attributedText = attributedTextFunc(text) 

を次にあなたがUILabel

にそれを提示したい場合は
label.attributedText = attributedText 

UPDATE

構造体の文字列のUIKitと大胆なスタイルについては何も知りません。

NSAttributedStringがあなたのtextはNSMutableStringの種類とあなたの関数である、ので、それはあるのUIKitを知っていて、あなたがあなたのケース

ReadMoreTextView.attributedTrimText = attributedText 
+0

に、この関数の戻り値を代入し、それを太字にする。しかし、私は=/ – Doe

+0

できません。はい、あなたはこのライブラリの中で行うべきです。 – Konstantin

+0

@Doe大胆な 'Read More'テキストを作りたいですか? –

0

UPDATE 2

をしたい任意のテキストスタイルが含まれていますattributedTextFuncはNSStringの型です。

これは問題ですので、NSStringからNSMutableStringに変更してください。

+0

NSMutableStringはNSStringのサブクラスです。問題はNSAttributedStringにあります。 NSAttributedStringはNSStringのサブクラスではありません – Konstantin

2

ので、あなたがtextを再割り当てすることはできません。

  • textが一定である(let
  • textNSMutableStringですが、attributedTextFuncリターンNSAttributedString

はあなたのように変数にattributedTextFuncの結果を格納する必要がありますNSAttributeStringを設定し、attributeTextUILabel ins text

if let text = trimText?.mutableCopy() as? NSMutableString { 
    // ... 
    let attributeText = attributedTextFunc(text) 
    someLabel.attributeText = attributeText 
} 
0

のTEADは、このコードを使用して、通常の文字列と(太字である必要がある)太字文字列を渡します。

func attributeStrings(first: String, second : String) -> NSMutableAttributedString{ 
     let myNormalAttributedTitle = NSAttributedString(string: first, 
                 attributes: [NSFontAttributeName : UIFont.boldSystemFontOfSize(15)]) 
     let myAttributedTitle = NSAttributedString(string: second, 
                attributes: [NSForegroundColorAttributeName : UIColor.blackColor()]) 
     let result = NSMutableAttributedString() 
     result.appendAttributedString(myNormalAttributedTitle) 
     result.appendAttributedString(myAttributedTitle) 
     return result 
    } 

と私はこのライブラリのhttps://github.com/ilyapuchka/ReadMoreTextViewを使用している、と私はトリミングされたテキストの色を変更したい

someLabel.attributeText = attributeStrings("My Name is", second : "Himanshu") 
関連する問題