2011-11-06 1 views
3

을 위해 내가 중심 정렬을 가지고 펜촉에서 설정의 텍스트 필드 중 하나에 대한 콘센트에 패널 펜촉이, 정렬 또는 글꼴 중 하나만을 설정할 수 있습니다. 패널을 표시 할 때이 텍스트 필드를 굵게 표시하고 싶습니다. NSTextField는 NSControl의 하위 클래스이므로 setAttributedStringValue 메서드를 사용하고 특성 문자열을 사용할 수 있습니다. 그래서 다음과 같이 굵은 글씨체를 사용했습니다.는 NSTextField있는

돋보기가 표시되지만 필드는 왼쪽 맞춤입니다.

은 내가 setAlignment를 추가했지만, 그것은 아무런 영향이 없었다 :

NSFont *fontBolded = [NSFont fontWithName:@"Baskerville Bold" size:12.0f]; 
NSMutableParagraphStyle *paragStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
[paragStyle setAlignment:NSCenterTextAlignment]; 
NSDictionary *dictBoldAttr = [NSDictionary dictionaryWithObjectsAndKeys:paragStyle, NSParagraphStyleAttributeName, fontBolded, NSFontNameAttribute, nil]; 
NSString *sHelloUser = NSLocalizedString(@"Hello User", @"Hello User"); 
NSAttributedString *attrsHelloUser = [[NSAttributedString alloc] initWithString: sHelloUser attributes:dictBoldAttr]; 
[self.fooController.tfPanelCenteredField setAttributedStringValue:attrsHelloUser]; 
[attrsHelloUser release]; 
[paragStyle release]; 

이제 텍스트 필드가 다시 중심 :

[self.fooController.tfPanelCenteredField setAlignment:NSCenterTextAlignment]; 

그래서 나는 기인 문자열의 속성에 중심 parapraph 스타일을 추가하는 시도를 , 그러나 괄호는 사라졌다. 속성이 설정된 문자열은 속성 설정 중 하나만 허용 할 수 있습니다. 나는 간단한 것을 놓치고 있습니까?

답변

8

코드에 오타가 있습니다. NSFontNameAttributeNSFontAttributeName이어야합니다.

그래서 당신의 속성 사전은 다음과 같습니다

NSFont *fontBolded = [NSFont fontWithName:@"Baskerville Bold" size:12.0f]; 
    NSMutableParagraphStyle *paragStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
    [paragStyle setAlignment:NSCenterTextAlignment]; 
    NSDictionary *dictBoldAttr = [NSDictionary dictionaryWithObjectsAndKeys: 
            fontBolded, NSFontAttributeName, 
            paragStyle, NSParagraphStyleAttributeName, 
            nil]; 
+0

독수리 눈! 어쩌구 ... 153 chars ... – jrturton

+0

고마워! 이 시간을 낭비해서 죄송합니다. 코드 감각이 오타가 올바른 것처럼 색을 지정 했으므로 절대로 알아 내지 못했을 것입니다. – Wienke

+0

내가 NSFontNameAttribute이 NSFontDescriptor의 속성 이니까 참조 (PS 왜 그 키는? "NSFontAttribute"와 "NSParagraphStyleAttribute는"더 이해가되지 않을까요? 전혀 그들에 "이름"을해야합니까), 그리고 글꼴 이름에 대한 문자열입니다 . 하지만 NSAttributedString의 NSFontAttributeName은 fontName 문자열이 아니므로 * 글꼴 *에 대한 것이므로 혼동을 일으킬 수 있습니다. – Wienke