iOS 7 용으로 만들 때 사용자 지정 글꼴이 UILabel에 올바르게 표시됩니다. 그러나 XCode 6 및 iOS 8의 경우 다른 "표준"글꼴이 표시됩니다.iOS 8의 사용자 지정 글꼴이 표시되지 않습니다
코드 :
UILabel *label = [[UILabel alloc] initWithFrame:rect];
UIFont *font = [[CAPTheme sharedTheme] appTitleFont];
label.text = title;
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
label.alpha = kLabelAlphaConstant;
[label setFont:font];
...
- (UIFont *)appTitleFont
{
NSArray *familyNames = [UIFont familyNames];
for (NSString *aFamilyName in familyNames) {
NSArray *fontNames = [UIFont fontNamesForFamilyName:aFamilyName];
NSLog(@"familyname: %@", aFamilyName);
for (NSString *aFontName in fontNames) {
NSLog(@" %@", aFontName);
}
}
return [UIFont fontWithFamily:@"MyFont" size:15.0f];
}
...
+ (UIFont*)fontWithFamily:(NSString*)fontFamily size:(float)size
{
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
return [UIFont fontWithName:fontFamily size:size];
}
else {
UIFont *font = [UIFont fontWithName:fontFamily size:size];
UIFontDescriptor *des = [[font fontDescriptor] fontDescriptorByAddingAttributes:@{
UIFontDescriptorTextStyleAttribute: UIFontTextStyleHeadline,
UIFontDescriptorSizeAttribute: @(size)
}];
UIFont *finalFont = [UIFont fontWithDescriptor:des size:0.0];
return finalFont;
}
}
의 내 글꼴 "MyFont를"를 부르 자. 그런 다음 디버그 인쇄물에 다음과 같이 표시됩니다.
familyname: MyFont
MyFont
MyFont-Bold
나는 둘 다 ttf 및 otf 파일로 추가하려고 시도했습니다. plist 파일에 Fonts provided by application
아래에 추가됩니다. 또한 목표에 추가됩니다. 또한 글꼴 중 하나만 사용하려고했습니다.
흥미로운 점은 레이블 크기에 따라 레이블 크기를 조정하는 코드가 있다는 것입니다. 존재하지 않는 글꼴 명 (예 : "MyFont123")을 입력하면 텍스트가 전혀 표시되지 않습니다. 즉, 사용자 정의 글꼴이 있음을 인식하지만 표시하지 않습니다.
아이디어가 있으십니까?
다음은 문제를 표시하기 위해 만든 데모 프로젝트입니다. https://www.dropbox.com/s/mkn7xb3fb2lmh20/customLabel.zip?dl=0 iOS 8을 사용하여 실행하면 글꼴이 표시되지 않습니다.
편집 : 내 생각 엔 내가 정의 글꼴 fontDescriptors을 사용할 수 없다는 것입니다하지만 난이 오류와 함께 아이폰 OS 8 충돌을 얻을, 다시 내 원래의 문제에있어이에
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:
'scaledValueForValue: called on a font that doesn't have a text style set'
유사 one scaledValueForValue: called on a font that doesn't have a text style set
이상한. 존재하지 않는 서체 이름을 입력하면 텍스트가 기본 글꼴로 표시됩니다 (Helvetica라고 생각하십니까?). –
그리고 fontDescriptorByAddingAttributes를 사용하여 iOS 8에서 충돌하지 않도록 하시겠습니까? – Sunkas
내가 이해할 지 모르겠다. iOS 8에서는 fontWithDescriptor를 사용하지 않으며 충돌하지 않습니다. 귀하의'[UIFont fontWithName : fontFamily size : size]'는 iOS 8에서 잘 동작합니다. 당신이보고있는 충돌은 무엇입니까? –