iOS 7 용으로 iOS 앱을 업데이트 할 때도 같은 문제가있었습니다. 글꼴 (예 : 선택기)을 사용자 정의 할 수없는 컨트롤의 경우에도 전체 애플리케이션에 맞춤 글꼴을 설정하고 싶습니다.
웹과 트위터에 대한 약간의 연구 끝에 메소드 교환 (Swizzling)을 사용하여 해결했습니다. 이는 메소드 구현을 교환하는 방식입니다.
참고 :이 방법은주의해서 사용하지 않으면 위험 할 수 있습니다! SO에서이 토론을 읽어 : Dangers of Method Swizzling
그러나, 이것은 무엇이다
- 이 UIFont + CustomSystemFont 같은 UIFont 범주를 만듭니다.
- .m 파일에
<objc/runtime.h>
을 가져 오십시오.
- 는 수정되지 않은 .H 파일을두고하는 .m에이 코드를 추가합니다 :
+(UIFont *)regularFontWithSize:(CGFloat)size
{
return [UIFont fontWithName:@"Your Font Name Here" size:size];
}
+(UIFont *)boldFontWithSize:(CGFloat)size
{
return [UIFont fontWithName:@"Your Bold Font Name Here" size:size];
}
// 방법 스위 즐링
+(void)load
{
SEL original = @selector(systemFontOfSize:);
SEL modified = @selector(regularFontWithSize:);
SEL originalBold = @selector(boldSystemFontOfSize:);
SEL modifiedBold = @selector(boldFontWithSize:);
Method originalMethod = class_getClassMethod(self, original);
Method modifiedMethod = class_getClassMethod(self, modified);
method_exchangeImplementations(originalMethod, modifiedMethod);
Method originalBoldMethod = class_getClassMethod(self, originalBold);
Method modifiedBoldMethod = class_getClassMethod(self, modifiedBold);
method_exchangeImplementations(originalBoldMethod, modifiedBoldMethod);
}
이되었다 '[[UILabel의 모습] setFont : [UIFont fontWithName : @ "YourFontName"size : 17.0]] ' os는 이제 사용되지 않습니다. 좋은 대답 인 StuartM의 링크를 살펴보십시오. – brainray