2012-01-28 3 views
12

Xcode 4.2에서 프로젝트에 맞춤 글꼴을 추가하려고하는데 사용하려고 시도 할 때마다 개체가 없음이라는 오류가 발생합니다.맞춤 폰트가 포함 된 UIFont가 Null로 실패합니다.

내가 수행 한 다음 내 .plist 값 '응용 프로그램에 의해 제공되는 글꼴'에 행을 추가 1)
"LCDMono2 Ultra.ttf"
2) 내 지원 파일에 글꼴을 추가하고 그것을 보여 주었다 XCode가 추가되었는지 확인하십시오.

UIFont *myFont = [UIFont fontWithName:@"LCDMono2 Ultra" size:16]; 

나는이 변형 시도했다 : :

UIFont *myFont = [UIFont fontWithName:@"LCDMono2 Ultra" size:16.f]; 
을 전체 이름이
4) 내 프로젝트에서 글꼴을 만든 "LCDMono2 울트라"이라고 정보 입수를 사용하여
3) 검증

5) 글꼴 이름 (addObject:myFont.fontName)을 사용하여 'nil' 오류가 발생했습니다.

무엇이 오류의 원인 일 수 있습니까? 이름의 공간과 같을 수 있습니까?

+3

'[UIFont familyNames]'를 사용하여 글꼴이 실제로 OS에서 "보이는지"확인하십시오. 그것은 최소한 물건을 좁힐 것입니다. iOS에서 인식하지 못하는 글꼴 파일이 있습니다. – smparkes

+0

@smparkes - 답장을 읽기 전에 방금 해 봤습니다! 그리고 확실히 Xcode는 자동으로 공간을 없애고 이름은 "LCDMono2Ultra"로 나타나며 작동합니다. 그게 항상 길은 아닌가? 감사. – wayneh

+1

아마도 Xcode가 아닙니다. 아마도 글꼴 이름이 글꼴 파일에 인코딩 된 방법 일 것입니다. 약간의 힌트 : iOS는 가족 중 두 얼굴 만로드 할 수 있도록하므로 가족의 얼굴이 두 개 이상인 경우 각 얼굴의 성을 고유하게 변경해야합니다. 그걸 추적하는 데 시간이 좀 걸렸어 ... – smparkes

답변

12

글꼴의 전체 이름의 공간이 자동으로 삭제되었습니다 생각하려고합니다 계획. 원래의 글꼴 파일을 확인 했으므로 공간이 있으므로 Apple은 공백을 처리하고 싶지 않습니다. 내가 "LCDMono2Ultra"에 대한 참조를 변경하고 작동합니다.

+4

"공백을 처리하고 싶지 않습니다."글꼴의 PostScript 이름을 사용하고 있다고 생각합니다. –

+4

David Dunham이 맞습니다. 일반적으로 코드에서 실제로 글꼴 이름을 하드 코딩하려면 전체 글꼴 이름을 사용하여 글꼴을 참조해야합니다. 공백을 허용하지 않는 것은 PostScript 이름 자체입니다. 글꼴이 무엇인지 잘 모르겠 으면 Font Book으로 Mac에 글꼴을 설치 한 다음 Font Book에서'Preview> Show Font Info'를 선택하여 PostScript 이름을 포함한 다양한 이름을 표시하십시오. "LCDMono2 Ultra"의 PostScript 이름은'LCDMono2Ultra'입니다. – NSGod

+0

네, 맞습니다. 내 시스템에 글꼴을 설치하지 않았으므로 글꼴 책에서 정보를 얻을 수 없었습니다. 일단 설치하면 Postscript 이름을 볼 수 있습니다. 감사. – wayneh

2

중단 점을 넣었는지, myFont에 유효한 UIFont 객체가 있는지 확인 했습니까? 이것은 "LCDMono2 Ultra"가 실제로 글꼴 패밀리 이름이고 "LCDMono2 Ultra-normal"또는 "LCDMono2 Ultra-bold"와 같은 것을 사용하고 싶다는 점에서 문제가 될 가능성이 있습니다. .ttf를 Font Book으로 열고 어떤 정보를 얻을 수 있는지 확인하십시오. 당신이 서체에 아무것도 찾을 수없는 경우

또는 당신은 전화 시도해 볼 수도 있습니다 : 다음

NSArray *fonts = [UIFont fontNamesForFamilyName:"LCDMono2 Ultra"]; 

그리고 그냥 그들이해야 내용을 확인하기 위해 디버거에서 배열 글꼴을 인쇄.

희망이 도움이 작동하지 않는 경우 알려 주시면는에 추가 한 후 뭔가 다른 :)

+0

고마워,하지만 해결책을 찾았 - 위의 내 의견을 참조하십시오. – wayneh

8

나는 몇 시간 동안 똑같은 문제를 겪었으며 위의 모든 것을 시도했지만 아무 것도 작동하지 않았다. 글꼴은 어디에나 추가되어야하고 다른 애플 리케이션에서 작동하는 글꼴을 사용해 보았지만 결코 등장하지는 않았다. 이 응용 프로그램에 추가되었습니다.

뭔가가 Xcode 5에서 변경된 것처럼 보입니다. 이전에 appName-info.plist에 추가해야했던 반면에,이 기능이 작동하려면 정보 탭에서 대상 속성에 글꼴을 추가해야했습니다.

희망이 도움이 다른 사람.

enter image description here

+0

중요 : 확장명을 포함한 전체 파일 이름을 추가하십시오. –

0

것은 (어쩌면 다른 이름) 글꼴을 찾아이 이름을 사용합니다.

for (NSString *familyName in [UIFont familyNames]) { 
     for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { 
      NSLog(@"%@", fontName); 
     } 
    } 
0

제 폰트 파일이 "Futura Heavy.ttf"이고, 그 다음에 -을 사용하면 아래와 같은 공간이 대체됩니다!

class func futuraHeavy() -> UIFont { 
     return UIFont(name: "Futura-Heavy", size: 12)! 
    }