如何禁用内容适合在屏幕上的UITableView表中的滚动
我有我的iPhone应用程序中的几个(分组样式)表(只在屏幕的一部分,并添加了界面生成器,但不是从UITableViewController子类),80%的时间是小的,将适合在屏幕上。 当桌子适合在屏幕上,我想禁用滚动,使其更清洁。 但是,如果表格离开屏幕(当行被添加到它),我想再次启用滚动(因为否则你不能看到的内容)。
有没有办法做到这一点? 我似乎无法弄清楚。 我知道要做的事情:
tableView.scrollEnabled = NO;
但我不知道在哪里,或者如果我必须计算表格对象的大小或什么东西才能得到这个工作。
更新 :这是最终为我工作的解决scheme:
if (table.contentSize.height < table.frame.size.height) { table.scrollEnabled = NO; } else { table.scrollEnabled = YES; }
在调用表上的reloadData之后,我运行这个代码,它计算出正确的大小并且似乎可以工作。
table.frame.size.height是屏幕上显示的对象的实际大小(你可以在界面生成器中看到这个),而table.contentSize.height是高度:标题,页脚和高度细胞加在一起。
我想你想设置
tableView.alwaysBounceVertical = NO;
你可以使用这个函数来validation可见单元的数量:
- (NSArray *)visibleCells
这个方法将会返回一个数组,其中的单元格是可见的,所以你可以计算这个数组中的对象的数量,并与你的表中的对象的数量进行比较。如果相等..你可以禁用滚动使用:
tableView.scrollEnabled = NO;
作为@Ginny提到..我们可能会有部分可见的单元格的问题,所以这种解决scheme在这种情况下效果更好:
tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame));
如果你正在使用autoLayout这个解决scheme做的工作:
tableView.alwaysBounceVertical = NO.
在Swift中:
tableView.alwaysBounceVertical = false
尝试这个
[yourTableView setBounces:NO];
您可以通过在滚动视图区域中select/取消select来设置启用/禁用反弹或滚动表格视图
你可以在故事板中编辑它(如果你使用的话)。 在表格视图下,有一个checkbox,显示“滚动已启用”。 取消它,你就完成了。
我相信tableview单元格的默认高度是44.0f。 你必须把你的数据源放在一个数组中? 然后检查[array count]*44.0f
超出了帧边界,如果是,则设置tableview.scrollEnabled = NO
,否则将其设置为YES。 在你为那个特定的tableview指定数据源的地方做它。
// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;