Вы можете программно определить (используя приблизительную ширину символов), какие будут последние два / три символа видимыми. Затем удалите оставшиеся символы и поместите три точки самостоятельно! Для символов верхнего регистра попробуйте ширину 16, а для символов нижнего регистра - ширину 12 точек при размере шрифта 15. Найдите правильные числа методом проб и ошибок.
Ok. Вот функция, которая регулирует высоту метки (для данной ширины) в соответствии с символами. Переменная "width" - это ширина метки, а "tempWidth" - это ширина текущей строки, которая рассчитывается. Вы можете изменить эту функцию, чтобы она возвращала усеченную строку с тремя точками в конце ...
#define smallLetterWidth 12
#define capitalLetterWidth 16
-(int) numRowsForString:(NSString *) inputStr width:(int) width{
int j=0;
numRows=1;
int tempWidth = 0;
while(j<[inputStr length]){
if([[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[inputStr characterAtIndex:j]])
tempWidth += capitalLetterWidth;
else
tempWidth += smallLetterWidth;
if(tempWidth>width){
tempWidth = 0;
numRows++;
j--;
}
else if(tempWidth==width)
{
tempWidth = 0;
numRows++;
}
j++;
}
return numRows;
}
Еще лучше: Что такое - [NSString sizeWithFont: forWidth: lineBreakMode:] подходит для?