標籤:data file height 通過 滑動 lock comment 一個 效果
上節地址:http://blog.csdn.net/lwjok2007/article/details/47401293
接著上節我們來實現 輸入框自己主動調節高度
首先,我們得知道,要推斷是否該換行了 前提是得知道 一行能夠輸入多少文字,
我們非常easy能知道我們輸入框的寬度,那麼下來僅僅要知道每一個文字的寬度就能夠計算一行文字的個數了
然後依據文字文字高度計算每超過一行我們須要給textView 加入的高度
首先要計算每一個文字的寬度和高度(我們依照正方形處理)
我們用到了 一個方法 sizeWithAttributes
他為我們提供了計算文字大小的方法。詳細大家能夠去研究api 這裡我們直接使用
首先建立一個變數
float heightText;//文字高度
然後使用該方法計算高度(前提是。文字的大小得提前知道。我們就依照20 計算)
NSDictionary *[email protected]{NSFontAttributeName:[UIFont systemFontOfSize:20.0]}; CGSize contentSize=[@"我" sizeWithAttributes:dict]; heightText=contentSize.height;
接下來我們須要在文字框內容變化的時候計算全部文字的長度,推斷是否超過了文字框寬度
實現 UITextViewDelegate 協議的
-(void)textViewDidChange:(UITextView *)textView 方法檢測文字改動
@interface CommentView()<UITextViewDelegate>
-(void)textViewDidChange:(UITextView *)textView{ float currentLineNum=1;//預設文字框顯示一行文字 float textViewWidth=self.textView.frame.size.width;//取得文字框高度 NSString *content=textView.text; NSDictionary *[email protected]{NSFontAttributeName:[UIFont systemFontOfSize:20.0]}; CGSize contentSize=[content sizeWithAttributes:dict];//計算文字長度 float numLine=ceilf(contentSize.width/textViewWidth); //計算當前文字長度相應的行數 if(numLine>currentLineNum ){ //假設發現當前文字長度相應的行數超過。 文字框高度。則先調整當前view的高度和位置。然後調整輸入框的高度。最後改動currentLineNum的值 self.frame=CGRectMake(self.frame.origin.x, self.frame.origin.y-heightText*(numLine-currentLineNum), self.frame.size.width, self.frame.size.height+heightText*(numLine-currentLineNum)); textView.frame=CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.frame.size.height+heightText*(numLine-currentLineNum)); currentLineNum=numLine; }else if (numLine<currentLineNum ){ //次數為刪除的時候檢測文字行數降低的時候 self.frame=CGRectMake(self.frame.origin.x, self.frame.origin.y+heightText*(currentLineNum-numLine), self.frame.size.width, self.frame.size.height-heightText*(currentLineNum-numLine)); textView.frame=CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.frame.size.height-heightText*(currentLineNum-numLine)); currentLineNum=numLine; }}
好了 下來我們嘗試 測試一下 看效果出來沒
最後再給大家提點小問題 嘗試解決一下
比方說我們做評論view 行數不能無限增長要不然超出了螢幕。
我們假設限制文字框最高三行。超過三行的時候就不再添加。讓文字框通過滑動解決,同一時候刪除的時候也要讓文字框高度減小最少一行
大家能夠試試
有什麼問題能夠加群討論
代碼上傳至群空間 【文字框高度自己主動調整1.zip】
蘋果開發群 :414319235 歡迎增加 歡迎討論問題
iOS UITextView 高度隨文字自己主動添加,並尾隨鍵盤移動(二)