2016-08-24 2 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을 텍스트로 변환 할 수 없습니다. 그것은 두 가지 유형입니다.

문자열은 NSAttributedString에서 서브 클래 싱되지 않습니다.

당신은 설정해야합니다

attributedText = attributedTextFunc(text) 

을 그런 다음 UILabel의

에 제시 할 경우
label.attributedText = attributedText 

UPDATE

구조체 문자열 UIKit과 굵은 스타일에 대해 아무것도 모르는 .

NSAttributedString은 당신의 text이 인 NSMutableString와 함수의 유형이 때문에

ReadMoreTextView.attributedTrimText = attributedText 
+0

이 함수의 반환 값을 할당하고, 나는 손질 텍스트 색상을 변경하려면 및 대담하게 만드십시오. 하지만 난 할 수 없어 =/ – Doe

+0

예,이 라이브러리 안에서해야합니다. – Konstantin

+0

@Doe 굵은'Read More' 텍스트를 만들고 싶습니까? –

0

그것은이다 UIKit에 대해 알고 모든 텍스트 스타일은 당신이 당신의 경우

업데이트 2

원하는 포함 attributedTextFunc은 NSString 유형입니다.

이것이 문제이므로 NSString에서 NSMutableString으로 변경하십시오.

+0

NSMutableString은 NSString의 서브 클래스이며 문제는 NSAttributedString입니다. NSAttributedString은 NSString의 하위 클래스가 아닙니다. – Konstantin

2

당신은 재 할당 할 수 없습니다 text 때문에 :

  • text은 (let)
  • text 당신은 같은 변수에 attributedTextFunc의 결과를 저장해야 NSAttributedString

NSMutableString하지만 attributedTextFunc 반환 상수이다 NSAttributeStringattributeTextUILabel 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") 
관련 문제