将自己添加为UIScrollViewDelegate
UITableView 并实现,- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
以便如果您的视图处于起始位置,它们会执行以下操作:
- 您将UITableView
其大小设置为第二个状态:
[UIView animateWithDuration:.1f animations:^{
CGRect theFrame = myView.frame;
theFrame.size.height += floatOfIncreasedHeight;
myView.frame = theFrame;
}];
- 你的UIView
动画它的垂直运动
[UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionCurveLinear animations:^(void){
view.center = CGPointMake(view.center.x , view.center.y + floatOfVerticalMovement);
}completion:^(BOOL Finished){
view.center = CGPointMake(view.center.x , view.center.y - floatOfVerticalMovement);]
最后始终在委托实现中– scrollViewDidScrollToTop:
,以便您知道可以动画回到初始状态(使用相同的技术反转)。
更新:
由于您的视图位于滚动视图内,因此如果您对表格视图在起始位置部分超出范围(即,它只是滚动到视图中而不是更改大小)感到满意,则有一种更简单的方法:
使滚动视图框架大小与最终tableview
视图 + 初始(整个)视图一样大,并将其放置在 0,0 处(因此其最终部分将隐藏在屏幕之外)
scrollview.frame = CGRectMake(0,0,tableview.frame.size.width,tableview.frame.size.height + view.frame.size.height);
您使容器scrollview
内容与整个表格视图 + 整个视图 + 滚动表格视图时想要的视图数量一样大。
scrollview.contentSize = CGSizeMake(scrollview.frame.size.width, tableview.frame.size.height + view.frame.size.height + floatOfViewHeightIWantOutOfTheWay);
您将视图一个接一个地放置在滚动视图中,在表格视图之后留下所有额外的空白空间
view.frame = CGRectMake(0,0,view.frame.size.width, view.frame.size.height);
tableview.frame = CGRectMake(0,view.frame.size.height, tableview.frame.size.width, tableview.frame.size.height);
现在它应该可以工作了,因为由于支持iOS 3
嵌套scrolling