Tableview最后一个单元格使用滚动视图iOS不可见

Posted

技术标签:

【中文标题】Tableview最后一个单元格使用滚动视图iOS不可见【英文标题】:Tableview last cell is not visible using scrollview iOS 【发布时间】:2013-12-23 15:45:50 【问题描述】:

我的文件结构为:View -> ScrollView -> TableView。 现在tableView的内容是动态确定的。如果内容很大,则表的最后一条记录不可见。我尝试设置以下代码:

 self.scrollView.contentSize = CGSizeMake(320.0,568.0);

[self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0)
                         animated:YES];

但在横向模式下产生了问题。表格的内容滚动到最底部。如果滚动时出现的 ScrollBar 的大小减小,它会起作用吗?

此问题还有其他解决方法吗?

【问题讨论】:

检查故事板/xibs 中的自动布局设置...也许那里有问题 这是苹果公司的说法。 " 您不应该在 UIScrollView 对象中嵌入 UIWebView 或 UITableView 对象。如果这样做,可能会导致意外行为,因为这两个对象的触摸事件可能会混淆和错误处理。" 【参考方案1】:

也许这有点脏,哈哈。使用 -

tableView.contentInset = UIEdgeInsetsMake(0, 0, 120, 0); //values passed are - top, left, bottom, right

根据您的需要传递底部偏移量。

【讨论】:

【参考方案2】:

您的tableView 高度应该是ScreeHeight-NavBarHeight。在您的情况下,您的 tableView 看起来比它可用的可见屏幕高度高。

作为一种快速修复,请尝试以下操作,但理想情况下您需要使用约束,以便根据可用的屏幕高度自动调整大小。

- (void)viewDidLayoutSubviews 
    CGFloat navbarHeight = 44; //In ios7, this is supposed to be 64 but you should dynamically calculate it or better use constraints
    CGRect tempFrame = self.view.frame;
    self.tableView.frame = CGRectMake(tempFrame.origin.x, tempFrame.origin.y, tempFrame.size.width, tempFrame.size.height - navbarHeight);

注意:此代码需要转到您的 UITableViewController 子类

【讨论】:

【参考方案3】:

在设置滚动视图的 contentSize 时,您必须考虑表格的视图行高和行数。例如,如果您的 tableview 的高度是 200 并且 tableview 包含 3 行,那么您的内容大小的高度应该设置如下:-

self.scrollView.contentSize = CGSizeMake(320.0, (200 * 3));
[self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0)
                     animated:YES];

【讨论】:

这在横向方向的情况下会产生问题。 Header Section 远高于上面,tableView 显示一半。尝试了所有其他的东西,但没有得到任何突破......

以上是关于Tableview最后一个单元格使用滚动视图iOS不可见的主要内容,如果未能解决你的问题,请参考以下文章

swift 3 ios tableview按单元格滚动

为 iOS 选择 TableView 单元格时视图已更改

滚动时的 iOS TableView 索引值

滚动时在最后一个 tableView 单元中添加按钮显示两次

使用平移手势选择多个表格视图单元格

当单元格滚动回视图时表格崩溃