2012-10-22 5 views
1

나는 이전에 how to put whole word in second line (단어 감싸기)을 요청했습니다. 이제 나는 일에 관심이 있습니다. 예를 들어 "Lorem ipsummmmmm 긴 제목"이라는 문자열이 있는데 레이블에 대해 "setLineBreakMode"를 설정 했으므로 한 가지를 제외하고는 모든 것이 정상입니다. 어떤 단어는 길고 내 문자열 "ipsummmmmm"에있는 단어가 첫 번째 줄에있을 수 없다고 가정합시다. 두 번째 줄에 있습니다. 그리고 이제는 문제가 생겼습니다. 27 번째 문자보다 긴 문자열을 자르려면 전체 레이블을 설정해야합니다. 문제는 첫 번째 줄은 "Lorem"이고 다른 세 단어는 두 번째 줄에 표시된다는 것입니다.두 번째 줄의 문자 수를 계산하는 방법은 무엇입니까?

문자열에 대한 나의 코드 :

mainArticleTitleLabel.text = [finalMainArticleTitle stringByAppendingString : @ "..."];

어딘가에 @ "..."가 있고 어딘가에 단 단어가 있기 때문에 계산할 수있는 방법이 있습니까?

답변

2

나는 그것을하는 방법에 대한 아이디어가 있지만, 아마도 그것을 해결하는 가장 빠른 방법은 아닙니다.

내가 제안하는 것은 원래 문자열을 단어 배열로 분리하는 것입니다. 그런 다음 문자열을 단어 단위로 다시 작성하기 시작합니다. 단어를 추가 한 후에는 [sizeWithFont : constrainedToSize :] 메서드를 사용하여 레이블 너비와 큰 수, 즉 높이의 10,000을 제공 할 수 있습니다. 일단 높이가 1 줄에서 2 줄로 이동하면 첫 줄에 무엇이 있었는지 알게됩니다. 단어가 부족할 때까지 계속 단어를 추가하거나 3 행을 입력하면 2 행의 문자 수를 계산할 수 있습니다.

이 방법으로 문제를 해결하거나 올바른 방향으로 오길 바랍니다.

+0

이것은 실제로 텍스트를 줄로 나누는 일반적인 해결책입니다. 처음에는 모든 단어의 너비를 계산 한 다음 너비만으로 작업 할 수도 있지만별로 느리지는 않습니다. 전체적으로 'sizeWithFont :'를 호출하지 않아도됩니다 텍스트 줄. 그러나 모든 단어를 따로 따로 그릴 경우에만 작동합니다. – Sulthan

관련 문제