如何动态调整UITableView
高度?假设我有3行,每行的高度为65.当新行添加到UITableView
时,我希望它动态调整它的高度以适应新行。删除行以缩小行时反之亦然。
答案 0 :(得分:2)
编辑:误读
事物取决于(表格单元行的高度*表中的行数)作为tableview.frame.size.height。
好吧,我会建议像这样......
-(void)correctHeight
{
//Note : if all cells are having common value
CGFloat heightOfCell=[table rowHeight];
CGFloat expectedHeightOfTable=0;
for (int i=0; i< [table numberOfSections]; i++) {
//header section
CGFloat heightOfHeaderView=[table headerViewForSection:i].frame.size.height;
expectedHeightOfTable = expectedHeightOfTable +heightOfHeaderView;
//content section
expectedHeightOfTable = expectedHeightOfTable + heightOfCell*[table numberOfRowsInSection:i];
}
[table setFrame:CGRectMake(table.frame.origin.x, table.frame.origin.y, table.frame.size.width,expectedHeightOfTable)];
}
这将考虑标题和每行内容以及所有值以propmatically方式填充。所以不需要添加一些硬编码值
答案 1 :(得分:1)
可以通过
设置tableview高度[tableView setFrame:CGRectMake(0,0,width,height)];
但是例如,如果你使用tableView:heightForRowAtIndexPath将高度设置为150并且你将5行高度设置为60px,则tableView将变为可滚动,因为UITableView是UIScrollView的子类。
答案 2 :(得分:0)
正如评论中所说,奇怪的结构,但如果你坚持,那没关系。我建议只使用一个简单的UITableView
。
假设您有IBOutlet
到UITableView
和UIScrollView
...
在viewWillAppear
中添加代码之前,请添加:
float cellHeight = 65.0f;
int numberOfCells = 3;
在- (void)viewWillAppear:animated
中,在[super viewWillAppear:animated]
之后添加以下内容:
// remember fill the table with data using UITableViewDataSource's functions first
// refresh UITableView data
[tableView reloadData];
// resize UITableView
[tableView setFrame:CGRectMake(0, 0, tableView.frame.size.width, cellHeight * numberOfCells)];
// make UIScrollView the same size as UITableView
[scrollView setContentSize:tableView.frame.size];
[scrollView setNeedsDisplay];
// remember to lock tableView's scrolling, either in code / Interface Builder
[tableView setScrollEnabled:NO];
在UITableViewDelegate
的委托方法中:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return numberOfCells;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return cellHeight;
}
最后,如果您希望双重验证是否有任何表格单元格不在视线范围内,您可以使用:
- (NSArray *)visibleCells