iPod touch를 iOS 7.0.3으로 업그레이드했는데 “HelveticaNeue-Italic”이 사라진 것 같습니다. 다음을 사용하여 전화로 쿼리 할 때 :
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
다음 fontNames (13)를 얻습니다.
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
시뮬레이터에서 동일한 쿼리를 실행하면 (14) :
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
다른 사람이 보셨나요?
—- 새로운 정보 —-
WWDC 2013 비디오 “텍스트 키트와 함께 글꼴 사용”으로 돌아가서 흥미로운 부분은 12:22에 시작됩니다. 발표자는 OS X의 “MetaFonts”를 예로 들어 설명합니다. 그가 말하는 것은 아래의 글꼴이 다음과 같이 호출된다는 것입니다.
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
버전 또는 용도에 따라 동일한 기본 글꼴을 반환하지 않을 수도 있습니다. 그의 예는 Lucinda Grande였습니다. 그는 “HelveticaNeue-Italic”을 사용하는 것이 버전간에 사라질 수 있다고 말하는 것 같지 않았습니다.
그래서 iOS 7에서 실험을 구성했습니다. 다음 코드로 글꼴을 만들었습니다.
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
fontWithDescriptor에 대해 유효한 UIFont를 얻었고 fontName의 글꼴을 다음과 같이 쿼리했을 때 :
[fontWithDescriptor fontName]
나는 돌아왔다…
HelveticaNeue-Italic
그림을 이동???
따라서 7.0.3에 대한 가능한 대답은 위의 코드 인 것 같습니다.
—- 추가 조정 —-
솔루션이 위에서 작동했지만 공식적으로 옳다고 생각하지 않습니다. 다음 솔루션으로 전환했습니다.
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
이것은 모든 옳은 일을하는 것처럼 보입니다. 다른 글꼴 패밀리로 이전 접근 방식을 시도했는데 fontName 및 fontFamily와 혼동되는 것 같습니다. 도움이 되었기를 바랍니다!
답변
이것은 Apple 버그입니다. iOS 7.0.3에서 도입되었으며 아직 iOS 7.0.4에서 수정되지 않았습니다. iOS 7.1의 개발자 미리보기에서 수정 된 것으로 보입니다. 다음은 문제를 해결하기위한 코드 (개발자 포럼에서 Apple 제공)입니다.
#import <CoreText/CoreText.h>
CGFloat size = 14;
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];
if (font == nil && ([UIFontDescriptor class] != nil)) {
font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), size, NULL);
}
현재 버전의 Xcode (5.0.1 (5A2053))에서는이 글꼴이 Interface Builder의 글꼴 드롭 다운 목록에 옵션으로 나열되지 않는다는 점도 주목할 가치가 있습니다. 따라서 이전에이 글꼴로 레이블을 구성한 경우 UI가 혼란스럽고 레이블에 런타임시 다른 글꼴과 크기가 할당된다는 것을 알 수 있습니다 (아래의 ui screencap 참조). 스토리 보드 / xib에 구성된 레이블의 경우 코드에서 글꼴을 재설정해야합니다.
참고로 여기 에 개발자 포럼의 문제에 대한 토론이 있습니다.
답변
이것은 iOS 7.0.3의 버그입니다.
HelveticaNeue-Italic을 명시 적으로 사용하는 경우 다음 해결 방법을 사용하여 만들 수 있습니다.
UIFont* font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), fontSize, NULL);
그러나이 해결 방법은 iOS 7 에서만 작동합니다. 그것은 아이폰 OS 6 (때문에 배포하지 않습니다 CTFontRef
와 UIFont
아이폰 OS 6 브리지 무료하지 않았다). 그러나 iOS 6에서는 일반 글꼴 조회 코드 만 사용할 수 있습니다.
답변
그것이 버그라는 것이 나의 믿음입니다. 나는 Apple에 그렇게 제출했습니다. 슬프게도 내 앱이 이제 충돌합니다. 글꼴은 내가 사용중인 타사 라이브러리에서 사용됩니다. 트위터의 많은 사람들이 문제를보고하고 있습니다.
답변
동적 다음 이탤릭체로 액세스하는 대신 이름으로 글꼴을 액세스하는 경우
[UIFont fontWithName:@"HelveticaNeue-Italic" size:15.0f]
사용 [UIFont italicSystemFontOfSize:15.0f]
이 나를 위해 잘 작동합니다.
답변
나는 현재 세션을 찾지 못했지만 iOS7에서 더 이상 사용할 수있는 글꼴에 의존 할 수 없다고 말했습니다. 앱 수명 동안 변경 될 수도 있습니다. 기본적으로 의미하는 바는 앱에서 글꼴을 지정할 때 엉망이되어 글꼴 설명 자나 선호하는 글꼴을 대신 사용하는 것입니다!
답변
작동하는 것 같은 또 다른 해결책을 찾았습니다. 전화를 로그 아웃했습니다.
[[UIFont italicSystemFontOfSize:12.0] fontName]
사용중인 실제 시스템 기울임 꼴 글꼴이 무엇인지 확인하고 “.HelveticaNeueInterface-ItalicM3″을 반환했습니다. 간단한 테스트를 통해
[UIFont fontWithName:@".HelveticaNeueInterface-ItalicM3" size:12.0]
공장! 시각적으로 비교해 보면 위의 호출에서 반환 된 글꼴은 원래 ‘HelveticaNeue-Italic’글꼴과 정확히 동일한 것으로 보입니다.
이 문제는 거의 확실하게 버그입니다. Helvetica Neue는 iOS 7의 기본 글꼴이므로 해당 제품군의 글꼴이 누락되어서는 안됩니다. Xcode v.5.0에서는 모든 것이 잘 작동했지만 5.0.1로 업그레이드하자마자이 문제가 나타나기 시작했습니다. 나는 Apple에 버그를 신고했습니다. 그때까지는이 솔루션이 작동하는 것 같습니다 …
답변
Apple에 제출 한 버그 보고서는 “중복으로 마감 됨”으로 표시되었습니다. 나는 그들이 그것을 버그라고 생각한다는 것을 의미합니다. 그러나 iOS 7.0.4는 버그를 수정하지 않습니다.