나는 MSMutableAttributedString displayContent가 있습니다. 콘텐츠의 속성은 문자열 에 따라 다르며 색상 및 글꼴 크기는 문자로 다를 수 있습니다.appendAttributedString : in NSMutableAttributedString
문자열 끝 부분에 새 문자를 추가하고 displayContent에서 마지막 문자의 속성을 선택하려고합니다. 사용자가 제어 할 수 있기 때문에 이러한 속성이 무엇인지 미리 알 수 없습니다. 나는 새로운 캐릭터 (tempAttr)를 추가하면
: 내가 설정하지 않은 새로운 캐릭터의 특성 (에 전체 문자열의 속성을 다시 나타납니다
NSAttributedString * tempAttr = [[NSAttributedString alloc] initWithString:appendage];
[displayContent appendAttributedString:tempAttr];
때문에 그럴 수 없어 그들이 무엇이 필요한지 아십시오).
tempAttr을 통해 displayContent의 마지막 문자 특성을 가져 오려면 어떻게해야합니까? 감사합니다. .
업데이트. 이 작업은 서투른 방법으로 진행되었습니다. 복사 속성은 디스플레이의 마지막 문자 (displayContent)에서 사전을 한 후 추가되는 새로운 캐릭터로 그 특성을 다시 적용 :
NSMutableDictionary * lastCharAttrs = [NSMutableDictionary dictionaryWithCapacity:5];
[lastCharAttrs addEntriesFromDictionary: [displayContent attributesAtIndex:0
effectiveRange:NULL]]; // get style of last letter
NSMutableAttributedString * tempAttr = [[NSMutableAttributedString alloc] initWithString:newCharacter
attributes:lastCharAttrs];
[displayContent appendAttributedString:tempAttr]; // Append to content in the display field
나는 설정처럼이 일을 더 우아한 방법이 바랐다 것
NSTextField의 속성
게시물에 대해 감사드립니다. 내가 코드로 라인을 대체하고 잘 작동했습니다. 고맙습니다. 왜이 작품에 대한 통찰력? mutableString 메소드는 단순히 attributedString의 문자열 내용을 반환합니다. Doc는 속성 자체가 복사되는 것에 대해 언급하지 않습니다. 그래서 appendedString이 올바른 속성을 어디에서 가져 왔는지는 알 수 없습니다. –
나도 몰라. 구현 세부 사항 (예 : 변경 될 수있는 부작용/행동)인지 실제 의도 된 동작인지는 판단 할 수 없습니다. 그러나 "appendAttributedString :"과는 대조적으로 자체 속성이 분명히 있습니다. 기본 문자열을 확장하면 속성이 이어져야한다는 추론을 볼 수 있습니다. 즉, 실제로 어떻게 연결되어 있는지, 나는 전혀 모른다. –
@BenCochran 스트레칭 속성에 대해 특별히 언급 된 것은 없지만 문서는 '수신기가이 문자열로 변경 사항을 추적하고 속성 매핑을 최신 상태로 유지합니다.'라고 말합니다. –