2012-02-03 3 views
5

나는 이와 비슷한 많은 스레드가 있다는 것을 알고 있지만, 나는 (내가 말할 수있는 한) 그것들 모두를 읽었으며, 내가 가진 동일한 문제를 보지 못했다. 텍스트를 UILabel에 수직으로 맞 춥니 다?

나는 수직으로 라벨에 표시 할 모든 텍스트를 얻기 위해 노력하고있어.

설명해 드리죠 - 총 높이 (예를 들어, 24pts) 동일 할 수 있지만, 그래서 글꼴은 항상 같은 방식으로 생성되지 않습니다. 그러나 Ascender와 Descender는 매우 다양합니다. 하나의 글꼴이 기준선보다 높거나 다른 글꼴은 주로 아래에 있습니다. 따라서 동일한 텍스트가 서로 다른 글꼴로 표시되어 항상 동일한보기/레이블에 표시되지 않을 수 있습니다.

예를 들어, 아래 스크린 샷을 참조하십시오.

는 돋움 굵게 300pts이다. 두 번째는 Apple Gothic 300pts입니다. 은 "g"의 바닥은 헬 베티으로 차단하는 방법을

공지 사항 (너무 많은 다른 글꼴 - 그것을 시도, 당신은 볼 수 있습니다).

AppleGothic

Helvetica-Bold300

그래서 내 문제는 이것이다 : 나는 상관없이 글꼴의 전체 텍스트를 볼 수 있도록하고 싶습니다. "Helvetica"예제의 텍스트를 레이블 내에서 위로 올리면 내 문제가 해결됩니다. 이를 쉽게하기 위해 한 줄만 표시하면됩니다.

불행하게도, 내가 본 솔루션 중 어느 것도 센더와 글꼴의 승천을 포함하지 않으며 사각형 내에서 텍스트를 그릴하고 잘립니다하지하는 방법을 알아 냈어. 다양한 스레드의 "VerticalAlignment"솔루션은 이러한 특정 문제를 해결하지 못합니다.

누구에게도 아이디어 나 해결책이 있습니까?

답변

2

가장 간단한 방법은 UILabel을 서브 클래스 화하고 NSString UIKit additions에있는 NSString의 - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode 메서드를 사용하는 것입니다.

서브 클래 스에서 - (void)setFont을 덮어 쓰고 글꼴의 크기가보기의 직사각형에서 작동하는지 테스트하고 너무 큰 경우 크기가 맞을 때까지 작게 만듭니다.

+0

감사합니다,하지만 난 게시 한 이미지는 이미 VerticalAlignment와'sizetofit'를 사용하여 하위 클래스의 결과이다. 글자 크기는 문제가 아닙니다 - 보시다시피, 텍스트를위한 충분한 공간이 있습니다. 제대로 정렬되지 않았습니다. – wayneh

+0

좋아,하지만 당신이 문자열의 높이를 줄 sizeWithFont 메서드를보고, 당신이 그것을 알고 있다면, 당신은 자신을 중심에두고 drawStringAtPoint로 문자열을 그릴 수 있습니다. 링크를 통해 읽으십시오 -이 작업을 수행하는 데 필요한 모든 것을 제공합니다. – sosborn

+0

좋아, 나는 그것을 조사하고 내가 할 수있는 것을 볼 것이다. – wayneh

관련 문제