2011-02-07 51 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