获取UITableView从底部/捕捉到底部滚动,而不是顶部
问题描述:
我有一个表格视图,这是许多情况下将只有一个或两个单元格不填充屏幕。在这种情况下,我希望细胞坐在底部,而不是顶部。换句话说,他们应该“捕捉”到tableview的底部。获取UITableView从底部/捕捉到底部滚动,而不是顶部
我可以强制表视图,以他们滚动到这样的底部:
CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height);
[self.tableView setContentOffset:bottomOffset animated:NO];
然而,这仅仅是部分成功。首先,如果我将它放在viewDidLoad或viewWillAppear中,它只能在viewDidAppear中使用,这意味着用户首先看到桌面视图的顶部单元格,然后移动到底部。其次,如果他们滚动表格视图,当他们放开它时,它会自动“捕捉”回到顶部。
有谁知道如何改变这种行为?
答
要考虑的一个选择是根据要显示的行数调整UITableView本身的大小。假定你的UITableViewDelegate实现了heightForRowAtIndexPath,那么你可以在viewWillAppear方法中设置UITableView的高度,方法是将行数乘以每行的高度。
事情是这样的:
CGRect frame = [myTableView frame];
frame.size.height = [[myTableView dataSource] tableView: myTableView numberOfRowsInSection: 0] *
[[myTableView delegate] tableView: myTableView heightForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]];
[myTableView setFrame: frame];
这个例子假设你的表有一个部分,每一行都是相同的高度。如果涉及多个部分或者如果不同的行可能具有不同的高度,则计算大小将不得不变得更复杂一些。
无论如何计算高度,这个想法的本质虽然是让表格本身更短,不比它显示的一两行更高,而不是试图强迫它表现不同。