我的iphone应用程序中有一些(分组样式)表格(仅在屏幕的一部分上添加了 Interface Builder
,而不是 UITableViewController
的子类),80%的时间都很小并且适合屏幕 . 当表格适合屏幕时,我想再次启用滚动(因为否则您无法看到该内容 . )
有没有办法做到这一点?我似乎无法弄明白 . 我知道这样做:
tableView.scrollEnabled = NO;
但我不确定在哪里,或者我是否必须计算表格对象的大小或其他东西才能使其发挥作用 .
Update :这是最终对我有用的解决方案:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
我在表上调用 reloadData
后运行此代码,它计算出正确的大小并且似乎有效 .
table.frame.size.height
是屏幕上显示的对象的实际大小(您可以在 Interface Builder
中看到),而 table.contentSize.height
是高度: Headers ,页脚和每个单元格的高度加在一起 .
9 回答
我想你想要设定
您可以使用此功能验证可见单元格的数量:
此方法将返回一个包含可见单元格的数组,因此您可以计算此数组中的对象数量,并与表格中的对象数量进行比较..如果它相等...您可以使用以下命令禁用滚动:
正如@Ginny所提到的......我们可能会遇到部分可见单元格的问题,因此在这种情况下此解决方案效果更好:
如果你使用autoLayout这个解决方案做的工作:
在Swift中:
试试这个
您可以通过在“滚动视图”区域中选择/取消选择这些来设置启用/禁用反弹或滚动表视图
您可以在故事板中编辑它(如果您使用的话) . 在表格视图下,有一个复选框,上面写着“滚动已启用” . 取消选中它就完成了 .
// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;
所以有多个答案,需要一次性所有内容,所以我添加这个答案:
If you're using AutoLayout, by setting this only should work for you:
tableView.alwaysBounceVertical = false
只需找到此选项并选择
untick
“Bounce Vertically
” .这是参考:
If you're not using AutoLayout:
我相信tableview单元的默认高度是44.0f . 您必须将数据源放在数组中吗?然后检查
[array count]*44.0f
是否超出帧边界,如果设置为tableview.scrollEnabled = NO
,则将其设置为YES . 在为特定的tableview计算数据源的地方执行此操作 .