UITextПросмотреть, как обрезать текст - PullRequest
1 голос
/ 07 февраля 2011

У меня есть UITextView, который отображает статус Facebook, загруженный из Facebook Connect.Я пытаюсь сделать так, чтобы UITextView просто создавал предварительный просмотр текста.Я хочу, чтобы это выглядело так, как будто это слишком много текста для UILabel.Это будет что-то вроде «Слишком много текста ...» с точками, но UITextViews этого не делают.Кто-нибудь знает, как заставить его работать?

Ответы [ 3 ]

3 голосов
/ 07 февраля 2011

Напишите отдельный метод, который подсчитывает, сколько букв в строке, и если их больше, чем какое-либо заданное значение, обрежьте его и добавьте три точки до конца.

Также рассмотрите возможность использования UILabels вместоUITextViews, если вам не нужно редактировать информацию внутри, поскольку UITextViews занимают больше времени для выделения и инициализации и обычно работают медленнее, чем UILabels.

0 голосов
/ 27 июня 2013

Попробуйте приведенный ниже код. Он будет отображать две точки в текстовом виде с текстом, превышающим его высоту кадра.

if(textview.contentSize.height > textview.frame.size.height)
{

    while (textview.contentSize.height > textview.frame.size.height)
    {
        textview.text = [textview.text substringWithRange:NSMakeRange(0, textview.text.length-1)];
    }
    textview.text = [textview.text substringWithRange:NSMakeRange(0, textview.text.length-2)];
    textview.text= [NSString stringWithFormat:@"%@..",textview.text];
}

Это работает, только когда мы устанавливаем правильную высоту UITextview относительно шрифта и размера шрифта этого текстового представления.
Например, если шрифт выделен жирным шрифтом, системный шрифт размером 16 означает, что высота текста должна быть не менее 30.

0 голосов
/ 25 мая 2012
+(NSString *)getTruncatedTextForString:(NSString *)inputString withFont:(UIFont *)font withLength:(int)textViewlength 
{

    CGSize dotSize=[@"..." sizeWithFont:font];
    float dotWidth=dotSize.width;
    NSString *outputString=@"";

    int reqLength=textViewlength-dotWidth;

    for(int i=0;i<inputString.length;i++) 
    {

        NSString *tempStr=[outputString stringByAppendingString:[inputString substringWithRange:NSMakeRange(i,1)]];

        if([tempStr sizeWithFont:font].width>reqLength)
        {
            break;
        }
        else 
        {
            outputString=tempStr;
        }
    }
    NSString *tempStr=[outputString stringByAppendingString:@"..."];
    outputString=tempStr;
    return outputString; 
}
...