Sta*_*ght 7 iphone scroll uitableview ios
我正在尝试通过点击按钮以编程方式滚动UITableView.在手动操作时应该是相同的效果,或者在滚动时间内更长一点.
首先我尝试使用scrollToRowAtIndexPath:atScrollPosition:animated:但它太快并且及时修复.它也没有任何加速和减速.
任何想法如何以编程方式滚动UITableView,因为它已手动滚动?我正在考虑给它发一些自定义的触摸.你觉得它可行吗?
非常感谢任何想法和帮助!谢谢!
UITableview是UIScrollview的子类.与UIScrollview类似,您可以通过设置contentOffset属性以编程方式设置UITableview的滚动位置.
您可以在动画块中更改此属性值,以便更好地控制时间.您需要计算Y点位置.假设您要滚动到第50行,它可能是50*rowHeight(假设它的高度一致).
例如:
CGFloat calculatedPosY = 50 * rowHeight // do you own calculation of where you'd like it.
[UIView animateWithDuration:0.2
animations:^{theTableview.contentOffset = CGPointMake(0.0, calculatedPosY);}
completion:^(BOOL finished){ }];
Run Code Online (Sandbox Code Playgroud)
您可以使用另一种方法,它也提供更多选项
看看这个方法:
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
Run Code Online (Sandbox Code Playgroud)
小智 6
在单元子视图中设置按钮,并使用此代码在按钮的触摸事件上以编程方式滚动表.如果您没有将按钮设置为表格单元格的子视图,则根据需要修改此代码.
CGPoint point = [button.superview convertPoint:button.frame.origin toView:self.tableView];
CGPoint contentOffset = self.tableView.contentOffset;
contentOffset.y += (point.y - contentOffset.y - self.navigationController.navigationBar.frame.size.height); // Adjust this value as you need
[self.tableView setContentOffset:contentOffset animated:YES];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12203 次 |
最近记录: |