Gin*_*nny 228 iphone scroll uitableview ios
我的iphone应用程序中有一些(分组样式)表格(仅在屏幕的一部分上添加Interface Builder,但未加入子类UITableViewController),80%的时间都很小,适合屏幕.当桌子适合屏幕时,我想禁用滚动,使其更清洁.但是如果表格离开屏幕(稍后将行添加到行中),我想再次启用滚动(因为否则您无法看到该内容.)
有没有办法做到这一点?我似乎无法弄明白.我知道这样做:
tableView.scrollEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
但我不确定在哪里,或者我是否必须计算表格对象的大小或其他东西才能使其发挥作用.
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Run Code Online (Sandbox Code Playgroud)
我在调用reloadData表后运行此代码,它计算出正确的大小并且似乎有效.
table.frame.size.height是Interface Builder屏幕上显示的对象的实际大小(您可以看到这一点),而table.contentSize.height高度是:标题,页脚和每个单元格的高度加在一起.
Lil*_*ard 378
我想你想要设定
tableView.alwaysBounceVertical = NO;
Run Code Online (Sandbox Code Playgroud)
Rob*_*raz 44
您可以使用此功能验证可见单元格的数量:
- (NSArray *)visibleCells
Run Code Online (Sandbox Code Playgroud)
此方法将返回一个包含可见单元格的数组,因此您可以计算此数组中的对象数量,并与表格中的对象数量进行比较..如果它相等...您可以使用以下命令禁用滚动:
tableView.scrollEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
正如@Ginny所提到的......我们可能会遇到部分可见单元格的问题,因此在这种情况下此解决方案效果更好:
tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame));
Run Code Online (Sandbox Code Playgroud)
如果你使用autoLayout这个解决方案做的工作:
tableView.alwaysBounceVertical = NO.
Run Code Online (Sandbox Code Playgroud)
Nat*_*iaz 37
在Swift中:
tableView.alwaysBounceVertical = false
Run Code Online (Sandbox Code Playgroud)
因此,存在多个答案,并且一次需要所有内容,因此我添加了以下答案:
如果您使用的是自动版式,则只需设置此项即可为您工作:
tableView.alwaysBounceVertical = false
只需找到此选项和untick“ Bounce Vertically”选项即可。
这是参考:
如果您不使用自动版式:
override func viewDidLayoutSubviews() {
// Enable scrolling based on content height
tableView.isScrollEnabled = tableView.contentSize.height > tableView.frame.size.height
}
Run Code Online (Sandbox Code Playgroud)
// Enable scrolling based on content height
self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;
| 归档时间: |
|
| 查看次数: |
138838 次 |
| 最近记录: |