【发布时间】:2011-04-05 07:52:33
【问题描述】:
是否有可能以某种方式降低 UITableView 顶部或末尾的弹跳高度?
谢谢
【问题讨论】:
标签: iphone cocoa-touch ios uitableview
是否有可能以某种方式降低 UITableView 顶部或末尾的弹跳高度?
谢谢
【问题讨论】:
标签: iphone cocoa-touch ios uitableview
您可以在scrollViewDidScroll方法中检查和设置contentOffset属性:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y <= -100)
{
CGPoint offset = scrollView.contentOffset;
offset.y = -100;
scrollView.contentOffset = offset;
}
}
【讨论】:
必须通过UIScrollView 属性bounces 完全禁用它。这几乎是一个开或关的事情。
【讨论】:
我怀疑。滚动视图的弹性是一个实现细节,UIScrollView 类似乎没有公开让您调整它的属性。
【讨论】:
除了René Fischer 答案之外,请遵循完整代码以减少反弹顶部和底部。
Swift 版本:
override func scrollViewDidScroll(scrollView: UIScrollView) {
var offset = scrollView.contentOffset;
if (offset.y < bounceLimit) {
offset.y = bounceLimit;
scrollView.contentOffset = offset;
}
let offsetY = scrollView.contentSize.height - scrollView.bounds.height - offset.y
if (offsetY < bounceLimit) {
offset.y = scrollView.contentOffset.y - (bounceLimit + abs(offsetY));
scrollView.contentOffset = offset;
}
}
Obj-C 版本:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint offset = scrollView.contentOffset;
if (offset.y <= -100)
{
offset.y = -100;
scrollView.contentOffset = offset;
}
CGFloat offsetY = scrollView.contentSize.height - scrollView.bounds.height - offset.y
if (offsetY < bounceLimit) {
offset.y = offset.y - (bounceLimit + abs(offsetY));
scrollView.contentOffset = offset;
}
}
注意:表格高度 (contentSize.height) 至少应为设备屏幕高度减去弹跳限制。
【讨论】:
你不能改变滚动视图的弹跳属性,你可以禁用或启用
【讨论】: