코딩하는 나귀

외부 폰트를 사용하기 위해서는 2단계의 작업을 해야한다.

1. 사용할 폰트(.ttf, .otf)를  리소스로 추가한다.

2. 프로젝트 info.plist 에 'Fonts provided by application' 항목을 추가하고 item으로 추가한 폰트 리소스 파일명을 적어준다.
    (여러개 인경우  'Fonts provided by application' 가 배열이기 때문에 계속 추가해주면 된다.)

사용법
[UIFont fontWithName:@"NanumMyeongjoOTF" size:fontSize]] 

그런데 IB에서 바로 적용하면 좋겠지만 그렇게 안되서 일일이 객체마다 폰트를 코드로 변경해줘야 하는게 너무 귀찮았다...

그래서 재귀적으로 자식들에 폰트 사용 여부를 판단하여 수정하는 루틴을 만들어서 사용하고 있다.

아래와 같으니 필요하신 분은 사용하시고 더 좋은 방법이 있으면 저도 좀!!!

void changeFont(UIView* targetView, NSString* fontName)

{

for (UIView* subView in targetView.subviews) {

if ([subView isKindOfClass:[UIView class]]) changeFont(subView, fontName);

if ([subView respondsToSelector:@selector(font)] == NO) continue;

if ([subView respondsToSelector:@selector(setFont:)] == NO) continue;

if ([[(id)subView font] isKindOfClass:[UIFont class]] == NO) continue;

 

CGFloat fontSize = ((UIFont*)[(id)subView font]).pointSize;

[(id)subView setFont:[UIFont fontWithName:fontName size:fontSize]];

}

}

사용법 
changeFont(self.view, @"NanumMyeongjoOTFBold");