2015-01-25 12 views
0
  • NSTextField 인 라벨 (TheLabel)이있는 xib가 있습니다. 텍스트는 사용자가 편집 할 수 없습니다.
  • 값이 내 컨트롤러 클래스의 NSString *에 바인딩되어 있습니다.
  • 내 컨트롤러 클래스의 NSFont *에 바인딩 된 글꼴이 있습니다.

컨트롤러 클래스의 NSString을 변경할 수 있으며 레이블에 반영된 것으로 보입니다.Cocoa NSTextField - 바인딩 및 설정 속성

컨트롤러 클래스의 NSFont를 변경할 수 있으며 레이블에 반영되어 있습니다.

하지만 ... 나는 내 인생에와 밑줄 해제하는 방법을 알아낼 수 없습니다에 대한

.

나는이 함수를 호출하면

...

-(void)setUnderlineType:(NSNumber*)underline 
{ 
    NSMutableAttributedString* content = [[TheLabel attributedStringValue] mutableCopy]; 
    [content addAttribute:NSUnderlineStyleAttributeName value:underline range:NSMakeRange(0, content.length)]; 
    [TheLabel setAttributedStringValue:content]; 
} 

... 나는 밑줄을 얻을 수 있지만, 다음 바운드 글꼴이 무시되고 좀 표준 글꼴을 얻을. 그때부터 내 컨트롤러에서 NSFont를 변경하면 NSTextField에 눈에 띄는 영향이 없습니다.

밑줄을 추가하기 전에 'content'에서 속성을 제거해 보았습니다 ... 글꼴 속성을 제거했지만 그 중 하나는 작동하지 않습니다.

이 함수를 호출 할 때마다 NSTextField에 바인딩 된 글꼴이 '무시 됨'이되고 표준 글꼴이 표준 크기임을 알 수 있습니다.

모든 안내가 크게 감사하겠습니다.

답변

0

NSAttributedString의 글꼴을 업데이트하려면 NSFontAttributeName을 설정해야합니다.

NSFont *font = ...; 
NSMutableAttributedString* content = [[theLabel attributedStringValue] mutableCopy]; 
[content addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, content.length)]; 
[theLabel setAttributedStringValue:content]; 
+0

시도해 주셔서 감사합니다.하지만 불행히도 문제가 해결되지 않습니다. 물론, 내가 밑줄을 설정할 때, 나는 텍스트 변경을 보았습니다 ... 밑줄과 올바른 폰트를 가졌지 만, 나중에 컨트롤러에 바인딩 된 'TheFont', 바인딩 가 사라지고 표시된 NSTextField가 변경되지 않았습니다. 나는 ZXIB 바인딩을 잊어 버릴 필요가 있다고 생각하기 시작했으며 폰트 나 밑줄을 바꿀 필요가있을 때마다 항상 NSTextField의 속성 문자열을 설정했다. – BuzzB