if ([_infoMedia.description length] > 270) {
NSRange labelLimit = [_infoMedia.description rangeOfString:@" " options:NSCaseInsensitiveSearch range:NSMakeRange(270, (_infoMedia.description.length - 270))];
_descTop.text = [_infoMedia.description substringToIndex:labelLimit.location];
_descBottom.text = [_infoMedia.description substringFromIndex:(labelLimit.location+1)];
} else {
_descTop.text = _infoMedia.description;
_descBottom.text = @"";
}
그래, 늦은 답변이지만 어쩌면 누군가를 도울 수 있습니다. 위 코드는 대략 앱에서 사용한 솔루션입니다.
_descTop은 첫 번째 레이블이고 _descBottom은 두 번째 레이블입니다. 270은 첫 번째 레이블 _descTop에 표시된 평균 최대 문자 수보다 약간 작은 상수입니다. 나는 여러 가지 문자열로 시도하면서 손으로 계산했다. 아마도 더 나은 방법이있을 수 있지만 나쁘지는 않다.
표시 할 문자열 (_infoMedia.description)이 270자를 초과하는 경우, 다음 문자를 검색하여 첫 번째 270 자와 문자열의 다음 단어 끝을 구분합니다. 270 자 제한은 단어 중간에 문자열을 자릅니다. 그런 다음 첫 번째 레이블에 문자열의 첫 번째 부분을 넣고 두 번째 레이블에는 두 번째 부분을 넣습니다.
그렇지 않은 경우 문자열의 전역을 첫 번째 레이블에만 넣습니다.
나는 그게 진절머리 나는 해결책이라는 것을 알고 있습니다. 그러나 그것은 효과가 있었고, 그렇게하기위한 더 좋은 방법을 찾지 못했습니다.
안녕, 난 당신이 뭘 하려는지 볼 수 있으며 응용 프로그램에서 또는 경우 기준에 경우에 작동 할 수 있지만 코드는 매우 유연하지 않고 계정에 사용되는 글꼴을해야 레이블 및 그것의 크기입니다. – Daniel