我有一个内置多个项目的UITableViewCell。 (不仅仅是一个textView,所以我不能按照this选项。)我试图根据内部的内容动态调整它的高度。
我将要改变的高度是UITextView和UIView。 textView将不断变化(在另一种方法,如果你愿意,我可以发布它)。如果用户点击按钮,UIView将会改变:
这是我的代码:
- (void)viewDidLoad
{
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
- (IBAction)thisButton:(id)sender
{
CGRect frame = self.myView.frame;
frame.size.height = 50;
frame.size.width = self.myView.frame.size.width;
self.myView.frame = frame;
// update 'myView's constraint
self.viewHeight.constant = self.myView.frame.size.height;
self.tableView.rowHeight = UITableViewAutomaticDimension;
[myTableView reloadData];
}
问题:
当我按下按钮时,会发生UIView的高度 更新,但随后单元格中的其他所有内容都会向上移动,并且单元格的大小保持不变。
当UITextView的高度发生变化时,它不会拉动其他所有内容 向下,细胞高度保持不变。虽然是textView的 身高确实会发生变化,只会超越其他一切。
约束:
在UITextView上我有3个约束 - 每边2个,顶部1个。 UIView有3个约束 - 每侧2个,底部1个。 然后我有一个约束将UIView连接到textView。
答案 0 :(得分:0)
您可以通过计算内部视图的最大高度来动态管理UITableViewCell大小:
NSArray * array = [[NSArray alloc] initWithArray:@ [view1,view2,view3]];
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
__block CGFloat maxHeight;
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIView *view = obj;
if (view.bounds.size.height > maxHeight) {
maxHeight = view.bounds.size.height;
}
}];
return maxHeight;
}
然后在方法的最后更改视图的尺寸,您必须调用[self.tableView reloadData]