2013-08-22 70 views
9

當狀態帖子太長時,Facebook應用會剪切文本並在最後添加「繼續閱讀」。它如何知道在哪裏剪切文本並添加「...繼續閱讀」?如何將按鈕添加到Facebook的「繼續閱讀」文本的末尾?

不只是添加一個按鈕textView或標籤,但我如何剪切字符串。 在下面的圖片中,例如,我將行數限制爲7.我可以在textView或label的右下角放置一個按鈕,但它可能會重疊某些字符。

enter image description here

+1

我想它只是在預覽文本字符的限制。如果文本超過該限制,則會將其切斷並添加「...繼續閱讀」。如果您想避免切斷單詞,只需在字符限制之前搜索空白(空格)的最後一個實例。 –

+0

@ParisNelson所以我使用這個從文本長度有限的矩形中獲取字符串。然後做你的話。這有意義嗎? –

+0

@ParisNelson嘗試描述一個實際的解決方案,而不僅僅是你看到的高層次的描述。 UILabel沒有「字符限制」,也不會自動添加可點擊的文本,並帶有「繼續閱讀」的良好樣式。 –

回答

2

這會幫助你:)

NSString *str=self.strQuestionTitle; 

CGRect rect=CGRectMake(51, 16, 257, 0); 

CGSize size=[str sizeWithFont:self.lblQuestion.font constrainedToSize:CGSizeMake(257, 3000) lineBreakMode:self.lblQuestion.lineBreakMode]; 
int lines=(size.height/self.lblQuestion.font.pointSize); 
self.lblQuestion.numberOfLines=lines; 
rect.size=size; 
if(lines>2) 
{ 
    if(lines==3 &&[str length]>66) 
    { 
     str=[str substringToIndex:66]; 
    str=[str stringByAppendingString:@"...Read More"]; 
    size=[str sizeWithFont:self.lblQuestion.font constrainedToSize:CGSizeMake(257, 67) lineBreakMode:self.lblQuestion.lineBreakMode]; 

    int lines=(size.height/self.lblQuestion.font.pointSize); 
    self.lblQuestion.numberOfLines=lines; 

    rect.size=CGSizeMake(257, 67); 
    } 
    else if(lines>3) 
    { 
     str=[str stringByAppendingString:@"...Read More"]; 
     size=[str sizeWithFont:self.lblQuestion.font constrainedToSize:CGSizeMake(257, 67) lineBreakMode:self.lblQuestion.lineBreakMode 


       ]; 

     int lines=(size.height/self.lblQuestion.font.pointSize); 
     self.lblQuestion.numberOfLines=lines; 

     rect.size=CGSizeMake(257, 67); 
    } 

    //self.lblQuestion.lineBreakMode=NSLineBreakByTruncatingHead; 
} 
相關問題