RSS

UILabel과 sizeWithFont 사용시 Bold체를 주의하라!

12 12월

별 생각 없이 코딩했었던 UILabel과 그 크기 결정을 위한 sizeWithFont 속에 간과하기 쉬운 시스템 Bold에 대한 함정이 있었다.

사례

UILabel를 System default에 bold체로 18포인트로 설정해놓고, numberOfLines는 2로 Wordwrap으로 linebreaking설정했다. 그리고 특정 문자열 예를 들면 “kth303호”를 넣었다. 이 문자열의 멤버변수인 – (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size 로 UILabel의 frame의 크기를 결정했다.  이때 폰트는 [UIFont systemFontWithSize:18.0f]를 사용했다.

이렇게 하니 글씨가 보이지 않는 것이다. 음… 뭘까? 10분 정도 고민했다. 결국 알아낸 것이 Bold로 써진 문자열이 그냥 system font로 18포인트로 가정하고 만든 frame을 벗어나게 되었고 wordwrap line break되면서 아래로 한 줄 내려간 것이다.

1차 시도

그럼 어떻게 할까 고민하다 [UIFont fontWithName:@”helvetica bold” withSize:18.0f] 이런 식으로 변경해봤지만 같은 결론 같았다.

2차 시도

결국 system default bold가 존재한다는 걸 알았고 [UIFont boldSystemFontOfSize:18] 을 써서 사이즈에 맞춰 출력할 수 있었다.

결론은 제목과 같다.

“UILabel과 sizeWithFont 사용시 Bold체를 주의하라! “

끝.

Advertisements
 
댓글 남기기

게시자: 켬 2011년 12월 12일 in iOS개발

 

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

 
%d 블로거가 이것을 좋아합니다: