iOS 使用UITextView換行,動(dòng)態(tài)改變高度

最近一個(gè)新的需求關(guān)于使用UITextView,加在cell上然后隨著你輸入的文字換行后cell的高度發(fā)生變化,下邊首先來(lái)說(shuō)下整體思路

  • 首先確認(rèn)UITextViw什么時(shí)候換行,有兩種換行,一種是自動(dòng)換行,但是你獲取不到換行符號(hào),所以無(wú)法確認(rèn)它在什么時(shí)候會(huì)換行,另外一種就是你按下?lián)Q行按鈕“\n”換行

  • 獲取到換行的狀態(tài)后就需要你動(dòng)態(tài)改變下cell的高度以及UItextview的高度

  • 如何計(jì)算什么時(shí)候換行,我們根據(jù)你輸入文字的字號(hào)大小和UITextView的輸入內(nèi)容來(lái)動(dòng)態(tài)計(jì)算其高度代碼如下:

     /**
      *  自適應(yīng)字體
      */
     -(CGSize)sizeWithString:(NSString*)string font:(UIFont*)font     width:(float)width {
    
    CGRect rect = [string boundingRectWithSize:CGSizeMake(width,   80000) options:NSStringDrawingTruncatesLastVisibleLine |   NSStringDrawingUsesFontLeading    |NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil];
    return rect.size;
    }
    
  • 然后需要在UITextFielDelegate代理方法里邊隨著你輸入的文字進(jìn)行修改代碼如下:
    -(void)textViewDidChange:(UITextView *)textView{
    //獲取文本中字體的size
    CGSize size = [self sizeWithString:textView.text font:QianBaoFont(F3_14) width:textView.width];
    NSLog(@"height = %f",size.height);
    //獲取一行的高度
    CGSize size1 = [self sizeWithString:@"Hello" font:QianBaoFont(F3_14) width:textView.width];
    NSInteger i = size.height/size1.height;
    if (i==1) {
    //設(shè)置全局的變量存儲(chǔ)數(shù)字如果換行就改變這個(gè)全局變量
    self.number = i;
    }
    if (self.number!=i) {
    self.number = i;
    NSLog(@"selfnum = %ld",self.number);
    self.textView.height = size.height;
    [self.tableView reloadRowsAtIndexPaths:@[self.indexPahth] withRowAnimation:(UITableViewRowAnimationAutomatic)];
    }
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容