我的iPhone应用程序中有一些(分组样式)表(仅在屏幕的一部分上,并且添加了Interface Builder
,但未从中添加UITableViewController
),而80%的时间很小,并且可以在屏幕上显示。当表格适合屏幕时,我想禁用滚动功能,以使其更加整洁。但是,如果表格不显示在屏幕上(以后再添加行时),我想再次启用滚动功能(因为否则您将看不到该内容。)
有没有办法做到这一点?我似乎无法弄清楚。我确实知道要这样做:
tableView.scrollEnabled = NO;
但是我不确定在哪里,或者我是否必须计算表对象的大小或某种方法才能使其正常工作。
更新:这是最终对我有用的解决方案:
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
对象的高度:页眉,页脚和每个单元格加在一起的高度。
我想你要设定
tableView.alwaysBounceVertical = NO;
在Swift中:
tableView.alwaysBounceVertical = false
您可以使用此功能验证可见单元的数量:
- (NSArray *)visibleCells
此方法将返回一个包含可见单元格的数组,因此您可以计算该数组中的对象数,并与表中的对象数进行比较..如果相等,则可以使用以下方式禁用滚动:
tableView.scrollEnabled = NO;
正如@Ginny所提到的..部分可见的单元格可能会有问题,因此这种解决方案在这种情况下效果更好:
tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame));
如果您使用的是autoLayout,请执行以下解决方案:
tableView.alwaysBounceVertical = NO.
因此,存在多个答案,并且一次需要所有内容,因此我添加了以下答案:
如果您使用的是自动版式,则仅通过设置即可适用于您:
- 在代码中:
tableView.alwaysBounceVertical = false
- 或在Interface Builder中:
只需找到此选项和untick
“ Bounce Vertically
”选项即可。
这是参考:
如果您不使用自动版式:
override func viewDidLayoutSubviews() {
// Enable scrolling based on content height
tableView.isScrollEnabled = tableView.contentSize.height > tableView.frame.size.height
}
尝试这个
[yourTableView setBounces:NO];
您可以通过在“滚动视图”区域中选择/取消选择这些设置来设置启用/禁用弹跳或滚动表格视图
您可以在情节提要中进行编辑(如果使用的是一个)。在表格视图下,有一个复选框,显示“已启用滚动”。取消选中它就完成了。
// Enable scrolling based on content height
self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;
我相信一个表格单元的默认高度是44.0f。您必须将数据源放在数组中吗?然后只需检查是否[array count]*44.0f
超出了框架范围,如果已设置tableview.scrollEnabled = NO
,则将其设置为“是”。在为该特定表视图找出数据源的位置执行此操作。
文章标签:ios , iphone , scroll , uitableview
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
评论已关闭!