我需要從上到下計算UITextView的高度。我修剪它包含了(所以它只能上升到光標)文本,然後使用的NSString的sizeWithFont:constrainedToSize:lineBreakMode:
方法制定出的高度,就像這樣:爲什麼NSString sizeWithFont:返回錯誤的大小?
NSRange range;
range.location = noteTextView.selectedRange.location;
range.length = noteTextView.text.length - range.location;
NSString *string = [noteTextView.text stringByReplacingCharactersInRange:range withString:@""];
CGSize size = [string sizeWithFont:noteTextView.font
constrainedToSize:noteTextView.frame.size
lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"height is: %f \n", size.height);
它做我輸入任何東西每次都是這樣。
問題是,當我鍵入NSLog時,它不會記錄高度變化,直到我在新行上輸入4個字符。這就好像sizeWithFont
方法正好是四個字符一樣。這裏的一對夫婦的截圖顯示了我的意思:
誰能告訴我是怎麼回事?
問題可能是文本視圖在顯示文本時在邊上有邊距,所以它的實際寬度小於textview的幀寬度 – Vladimir 2011-05-13 10:42:49
@Vladimir - 爲什麼是評論而不是答案?我認爲你是絕對正確的,但不能將它作爲一個好的答案投票:) – deanWombourne 2011-05-13 10:46:38
你做了很多假設,UITextView完全呈現完成,因爲你的計算已經完成了......現在或未來,它可能工作或可能不工作。我猜,@弗拉基米爾已經指出了這個問題。 – Eiko 2011-05-13 10:47:31