팝업 버튼 컨트롤 (NSPopupButton)에 라이브 글꼴을 표시 할 수 있는지 궁금합니다. 현재, 다음과 같은 방법으로 사용할 수있는 글꼴 목록이있는 팝업 버튼을로드합니다.라이브 글꼴 (스타일이 지정된 텍스트)이 포함 된 NSPopupButton
NSArray *familyNames = [[NSFontManager sharedFontManager] availableFontFamilies];
NSMutableArray *fontarray = [[NSMutableArray alloc] initWithObjects:nil];
[fontarray addObject:@"- Select one - "];
for (NSString *family in familyNames) {
[fontarray addObject:family];
}
[fontmenu1p addItemsWithTitles:fontarray];
NSMutableAttributedString을 사용하면 다음과 같이 될지도 모릅니다.
for (NSString *family in familyNames) {
NSDictionary *attr1 = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:family size:[NSFont systemFontSize]],NSFontAttributeName,[NSColor blackColor],NSForegroundColorAttributeName,nil];
NSMutableAttributedString *aString = [[NSMutableAttributedString alloc] initWithString:family];
[aString setAttributes:attr1 range:NSMakeRange(0,family.length-1)];
[fontarray addObject:aString];
}
[fontmenu1p addItemsWithTitles:fontarray];
한계 초과 오류가 발생합니다. 내 접근 방식이 옳은지 나는 모른다. popupbutton 컨트롤이 스타일있는 텍스트를 지원하는지 여부조차 모르겠습니다.
도움 주셔서 감사합니다.
범위 초과 오류는 어디에서 났습니까? – gaige
나는 이것이 마지막 줄이라고 생각한다. 100 개가 넘는 폰트가 있기 때문에 나는 정확하게 말할 수 없다. 감사. –
내 첫 번째 생각은 fontarray가 비어있을 수 있다고 생각했습니다. 사실, 그렇지 않습니다. 아이템 수를 세면 348이됩니다. 사실 NSLog로 객체 중 하나를 표시하면 다음과 같은 결과를 얻습니다. Arial Blac { NSColor = "NSCalibratedWhiteColorSpace 0 1"; NSFont = "\"Arial-Black 13.00 pt. P [] (0x100528bc0) fobj = 0x101b36150, spc = 4.34 \ ""; 그래서 NSPopupButton 스타일의 텍스트를 표시 할 수 없습니다 같아? VisualBasic/C#을 사용하면됩니다. 그래서 Objective-C로 할 수 있다고 생각했습니다. –