1

내가 UITextView의 재산 attributedText 애플의 문서에서 알 수있는 바와 같이 :UITextView 대체

이 속성은 기본적으로 무기 호입니다. 이 속성에 새 값을 할당하면 서식 정보가 없어도 text 속성의 값이 동일한 문자열 데이터로 바뀝니다. 또한 새 값을 지정하면 font, textColor 및 textAlignment 속성의 값이 업데이트되어 속성 문자열에서 위치 0부터 시작하는 스타일 정보를 반영합니다.

따라서 다른 위치에 여러 속성이있는 코드별로 attributedString을 추가 할 수 없습니다.

누군가 iOS6의 코드로 다음과 같은 효과를 낼 수 있습니까? 이것은 nib 파일을 사용하고 UITextView에서 텍스트 부분의 범위 속성을 변경하여 가능하지만 코드로 효과를 재현하는 것처럼 보입니다.

< '폰트 systemFontOfSize = 18>원하는 <'/ 폰트>효과 < '텍스트 색상 = [UIColor가 redColor] " < b를 기입하는'/ 텍스트 색상>Y 코드.

태그가 속성에 해당한다고 가정합니다.

P. 나는 UITextView와 함께 AutoLayout 기능을 사용하려고하기 때문에 CATextLayers를 사용하고 싶지 않다.

+1

DTCoreText를 본 적이 있습니까 : https://github.com/Cocoanetics/DTCoreText? –

+0

이 메시지를 지원합니다! (이 훌륭한 프로젝트의 메인테이너 임) – Cocoanetics

답변

4

당신은 당신이 필요로하는 모든 속성을 포함하는있는 NSDictionary와 함께 NSAttributedString은을 구축 할 수 있습니다 :

NSAttributedString* attString = [[NSAttributedString alloc] 
       initWithString: @"Desired effect to be written by code" 
        attributes: (NSDictionary*)attributes]; 

하거나 변경할 서브 클래스 NSMutableAttributedString의 사용

NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] 
       initWithString: @"Desired effect to be written by code"]; 

    [attString addAttribute: NSForegroundColorAttributeName 
         value: [UIColor redColor] 
         range: NSMakeRange(15,15)]; 

... 등
다음 ..

myTextView.attributedText = attString; 

각 속성 e는 문자열의 NSRange (위치, 길이)에 적용됩니다. 고유 한 속성 유형 (예 : 색상, 글꼴 크기)은 서로 다른 범위를 겹칠 수 있습니다.

업데이트
NSMutableAttributedString 예제를 사용하십시오. NSAttributedString's initWithString:attributes은 문자열의 전체 범위에 걸쳐 속성을 적용합니다. 즉, 혼동을해서 죄송합니다.

+0

내가 가진 문제는 다음과 같습니다 : 3 개의 NSMutableAttributedString 속성을 가진 UITextView 서브 클래스가 있습니다. 나는 응용 프로그램의 주어진 단계에서 이러한 속성에 속성 문자열을 추가하고 각각의 추가 작업 후에 UITextView 하위 클래스의 attributedText를 새 속성 문자열을 추가하는 데 사용한 속성으로 변경합니다. 속성에 NSLog를 추가하면 NSAttributedStrings에서 추가 한 특성이 표시되지만 사용 된 속성으로 해당 작업을 수행 한 후에 attributedText를 설정하면 위에 게시 한 코드와 동일한 효과가 없습니다. 어떤 아이디어? –

+0

첫 번째 질문에서 쓴 글에서 Apple docs로 다시 돌아가서 문제가 무엇인지 알았습니다. font, textColor 및 textAlignment 속성의 값을 여기에 할당하여 특성 문자열에서 위치 0부터 시작하는 스타일 정보를 반영하도록합니다. 따라서 나를위한 해결책은 각각의 NSAttributedString을 제공하는 것이 었습니다. 그 속성을 추가하고 속성 배열을 비워 두지 않도록했습니다. 도와 주셔서 감사합니다. @hewas –