2013-09-25 2 views
1

나는 Interface Builder에서 정의 된 폰트로 UILabel을 가장 굵고 굵게 만드는 방법을 알아 내려고하고 있습니다.UILabel에 굵게 추가하기

[myLabel setFont:[UIFont boldSystemFontOfSize:14.0]]; 

을하지만 난에 글꼴을 강요하고있어이 IB에서 디자인 된 방식에 비해 (모두 스타일 및 크기에) 잠재적으로 다른 :

은 내가 예를 들어,이 작업을 수행 할 수 있습니다 알고 있습니다.

[myLabel setBold:TRUE]; 

또는 False, 경우에 따라 :

나는 기본적으로이 작업을 수행 뭔가를 찾고 있어요.

이 방법이 있습니까?

+1

어떤 글꼴을 사용하고 있습니까? – incmiko

답변

2

불행히도 UIKit에는 "굵게"라는 개념이 없습니다. 속성이 지정된 문자열의 일부를 "굵은 글꼴"로 설정하려고 시도하면 실제로 같은 글꼴 패밀리에서 굵은 글꼴 변형을 선택합니다.

당신 수 있도록 다음과 같이 semihackish 일 :

@implementation UIFont (BoldVariant) 

- (UIFont *)boldVariant 
{ 
    for (NSString *fontName in [UIFont fontNamesForFamilyName:self.familyName]) { 
     if ([fontName hasSuffix:@"-Bold"]) { 
      return [UIFont fontWithName:fontName size:self.pointSize]; 
     } 
    } 

    // If we couldn't find it, return the same font. 
    return self; 
} 

@end 

이 글꼴은 표준 명명 규칙을 따르는 것으로 가정합니다. 또한 fontNamesForFamilyName:은 모든 값을 반환한다고 가정합니다. 시스템 글꼴을 사용하면 빈 배열을 반환하는 것으로 나타났습니다.

+0

고마워! 그게 정말 잘 작동하고 샘플 코드를 포함 해 주셔서 감사합니다.내가 무엇을했는지는 아무것도 발견되지 않으면 대담한 시스템 글꼴을 반환하는 것인데, 글꼴이 시스템 글꼴이고 배열이 비어있는 경우도 포함됩니다. return [UIFont boldSystemFontOfSize : self.pointSize]; –

0

당신이이 같은 label.text 굵게 만들 수 돋움, 예를 시스템 글꼴 사용하는 경우 : link

+0

그게 바로 내가 피하려고하는 것입니다. 어떤 레이블에도 사용할 수있는 유연성을 원하고 IB 디자이너의 글꼴을 바꿀 수 있기를 원합니다. 일치하는 코드 변경 사항을 검색하지 않아도됩니다. 하지만 도와 줘서 고마워. –

0

당신 : 당신은이 사이트에 아이폰 OS를 예를 들어 글꼴을 찾을 수 있습니다

myLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; 

레이블에있는 글꼴과 상관없이 작동하는 접근 방식을 원한다. 그래서 여러 레이블과 함께 작동합니까?

어때요?

글꼴 속성을 사용하여 레이블에서 현재 글꼴을 가져옵니다.

해당 글꼴의 글꼴 이름을 가져옵니다.

UI fontNamesForFamilyName을 사용하여 폰트 목록을 폰트 목록에 문의하십시오.

돌아 오는 글꼴 목록에서 굵은 글꼴을 찾을 수 있는지 확인하십시오. 그렇다면 현재 글꼴 크기로 글꼴을 요청하십시오. 그렇지 않은 경우에는 현재 크기로 굵게 시스템 글꼴을 사용하십시오. (이름에 "bold"라는 단어를 찾으려면 문자열 이름을 문자열로 분석해야 할 수도 있습니다.)

이상적이지 만 작동시킬 수 있어야합니다.

+0

heh yeah는 내가 생각하고있는 것과 비슷하지만 "굵은 글씨"라는 단어를 찾는 것은 너무 어색해 보인다. 그 글꼴이 대담한 변형임을 나타내는 글꼴에 대한 세부 정보를 얻을 수있는 방법이 있기를 바랬습니다. 도움을 주셔서 감사합니다 :) –

관련 문제