Iphone 获取UITableView,以便从底部向上滚动/捕捉到底部,而不是顶部

Iphone 获取UITableView,以便从底部向上滚动/捕捉到底部,而不是顶部,iphone,uitableview,scroll,Iphone,Uitableview,Scroll,我有一个表格视图,很多情况下只有一两个单元格没有填满屏幕。在这种情况下,我希望单元格位于底部,而不是顶部。换句话说,它们应该“捕捉”到tableview的底部 我可以强制表格视图将其滚动到底部,如下所示: CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height); [self.tableView setContentOffset

我有一个表格视图,很多情况下只有一两个单元格没有填满屏幕。在这种情况下,我希望单元格位于底部,而不是顶部。换句话说,它们应该“捕捉”到tableview的底部

我可以强制表格视图将其滚动到底部,如下所示:

  CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height);
  [self.tableView setContentOffset:bottomOffset animated:NO];
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];
然而,这只是部分成功。首先,如果我将其放在ViewDiLoad或ViewWillDisplay中,则不起作用,仅在ViewDidDisplay中,这意味着用户首先看到表格视图,单元格位于顶部,然后移动到底部。其次,如果他们滚动表格视图,当他们放开时,它会自动“捕捉”到顶部


<是否有人知道如何改变这种行为?

< P>一个考虑的选项是根据你将显示多少行来调整UITable视图本身的大小。假定UITableViewDelegate实现了heightForRowAtIndexPath,则可以通过将行数乘以每行的高度来设置ViewWillAspect方法中UITableView的高度

大概是这样的:

  CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height);
  [self.tableView setContentOffset:bottomOffset animated:NO];
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];
本例假设您的表格有一个部分,并且每行的高度相同。如果涉及多个部分,或者如果不同的行可能具有不同的高度,那么计算大小将变得更加复杂


不管如何计算高度,这个想法的本质只是使表本身变短,不比它显示的一行或两行高,而不是试图迫使它变为不同的行为。

< P>一个选项是根据你将显示多少行来调整UITable视图本身。假定UITableViewDelegate实现了heightForRowAtIndexPath,则可以通过将行数乘以每行的高度来设置ViewWillAspect方法中UITableView的高度

大概是这样的:

  CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height);
  [self.tableView setContentOffset:bottomOffset animated:NO];
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];
本例假设您的表格有一个部分,并且每行的高度相同。如果涉及多个部分,或者如果不同的行可能具有不同的高度,那么计算大小将变得更加复杂

不管高度是如何计算的,这个想法的本质是让桌子本身变短,不比它显示的一两行高,而不是强迫它表现出不同的行为