我試圖改變一個UITableViewCell內UITextView的高度,我有搜索了很多關於SO,有很多答案,其中有許多是非常相似的。我認爲最好的答案我發現是這樣的:更改動態UITextView的高度內的UITableViewCell
UITableViewCell with UITextView height in iOS 7?
我都試過了,但沒有很好地工作,這個我我的代碼:
- (CGFloat)textViewHeightForRowAtIndexPath: (NSIndexPath*)indexPath {
UITextView *calculationView = [self.textViews objectForKey: indexPath];
CGFloat textViewWidth;
if (!calculationView.attributedText) {
// This will be needed on load, when the text view is not inited yet
calculationView = [[UITextView alloc] init];
calculationView.attributedText = [[NSAttributedString alloc] initWithString:[[self.comments objectAtIndex:indexPath.row] valueForKey:@"comment"] attributes:self.regularDict];// get the text from your datasource add attributes and insert here
textViewWidth = 250; // Insert the width of your UITextViews or include calculations to set it accordingly
} else {
textViewWidth = calculationView.frame.size.width;
}
CGSize size = [calculationView sizeThatFits:CGSizeMake(textViewWidth, FLT_MAX)];
return size.height;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [self textViewHeightForRowAtIndexPath:indexPath];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CommentCell *cell = (CommentCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSAttributedString *text_user = [[NSAttributedString alloc] initWithString:[[self.comments objectAtIndex:indexPath.row] valueForKey:@"comment"] attributes:self.regularDict];
[cell.my_text setAttributedText:text_user];
[cell.my_text setTextAlignment:NSTextAlignmentRight];
CGRect frame = cell.my_text.frame;
CGSize size = [cell.my_text sizeThatFits:CGSizeMake(250, FLT_MAX)];
frame.size.height = size.height;
[cell.my_text setFrame:frame];
[self.textViews setObject:cell.my_text forKey:indexPath];
return cell;
}
但這是結果:
有很多的行空的空間,我不明白爲什麼...
任何人都可以幫助我嗎?