UITextView如何切断文本

时间:2011-02-07 18:39:18

标签: iphone uitextview uilabel

我有一个UITextView,显示从Facebook Connect加载的Facebook状态。我试图让它成为UITextView只是创建文本的预览。当UILabel的文本太多时,我希望它看起来像它。这将是像“有太多的文字...”这样的点,但UITextViews不这样做。有人知道如何让它发挥作用吗?

3 个答案:

答案 0 :(得分:3)

编写一个单独的方法,计算字符串中有多少个字母,如果有多个预设值,则将其剪切并在末尾附加三个点。

另外,如果您不需要编辑内部信息,请考虑使用UILabel而不是UITextViews,因为UITextViews需要更长的时间来分配和初始化,并且通常比UILabels慢。

答案 1 :(得分:0)

+(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; 
}

答案 2 :(得分:0)

尝试以下代码。它将在textview上显示两个点,文本大于帧高。

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的粗体系统字体,则textview高度应至少为30。