2011-02-07 50 views
1

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

回答

3

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

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

0
+(NSString *)getTruncatedTextForString:(NSString *)inputString withFont:(UIFont *)font withLength:(int)textViewlength 
{ 

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

    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; 
} 
0

试试下面的代码。它将在文本视图中显示两个点,其中文字多于其框架高度。

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]; 
} 

它的工作原理,只有当我们相对于该TextView中的字体和字号设置正确的高度与UITextview
对于离,如果字体是大小16来大胆的系统字体,TextView的高度应为最小30

+0

崩溃时,我复制粘贴此 – Kevin 2013-08-12 09:15:07