2013-10-11 2 views
0

저는 새로운 글꼴 API 인 iOS 7을 사용하고 있습니다.UIFont fontWithDescriptor : size : 맞춤 속성을 유지하지 않습니다.

글꼴 특성에 사용자 지정 특성을 추가하려고합니다. 이 새로운 속성을 사용하여 UIFontDescriptor을 생성 할 수 있지만 새 글꼴을 만들면 사용자 정의 속성이 손실됩니다.

- (UIFont*)fontWithCustomAttribute:(id)myNewAttribute 
{ 
    UIFontDescriptor *newFontDescriptor = 
     [self.fontDescriptor fontDescriptorByAddingAttributes: 
       [NSDictionary dictionaryWithObject:myNewAttribute 
              forKey:@"NewAttribute"]]; 

    return [UIFont fontWithDescriptor:newFontDescriptor size:0]; 
} 

newFontDescriptormyNewAttribute을 포함 않습니다,하지만 반환 된 글꼴의 설명 : 여기에

UIFont 카테고리 내가 사용하는 방법이다.

글꼴을 만들 때 UIFontDescriptor에 사용자 지정 특성을 유지하고 보존하는 방법이 있습니까?

답변

0

예, 가능합니다. 자신의 카테고리 클래스를 작성하고 문자열을 전달하고 카테고리 클래스 내에 로직을 작성하십시오. 그래서 당신이 당신의 카테고리 클래스의 메소드에 문자열을 보낼 때마다, 그것은 기능을 확장 할 것이고, 당신은 원하는 출력을 얻을 수있을 것입니다. 예를 들어, category 클래스에 작성된 코드는 다음과 같습니다. 당신의 문자열을 당신의 콘트롤 클래스의 카테고리 클래스를 가져 및 방법 아래에이를 호출하고 전달합니다 - 아마 어떤 글꼴

-(NSString*)getFontString:(NSString*)font 
    NSString *str=font; 
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:str]; 
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,string.length)]; 
    [text setEnabled:YES]; 
    [text setAttributedText:string]; 
0

을 (fontWithDescriptor:size:에서) 사용자 정의 속성과 일치하지 않습니다, 그래서 그들은 글꼴 때문에 잃어버린 것 돌려주게되는 것은 가지고 있지 않다. 당신이 교체 할 때

이 코드는 잘 작동 : 예컨대와

[NSDictionary dictionaryWithObject:myNewAttribute 
             forKey:@"NewAttribute"]]; 

:

@{UIFontDescriptorFamilyAttribute : @"Georgia"} 

그래서 문제는 확실히 사용자 정의 속성으로 자리 잡고 있습니다.

+0

답을 이해할 수 있지만 가족, 크기, 이름, 특성 등과 같은 잘 알려진 속성을 추가 할 필요가 없습니다. 예를 들어 NSDate와 같은 개인 속성을 추가하는 것과 같습니다. UIFont 속성에 따라 저장되고 나중에 내 코드에서 사용됩니다. 아마도 UIFontDescriptor가 일반 데이터 컨테이너가 아니기 때문에 올바른 방법은 아닙니다. – Lola

+0

아, 그러면 UIFontDescriptor가 잘못된 방법이라고 생각합니다. 개인 속성을 글꼴 또는 문자열과 연관시켜야합니까? –

관련 문제