我有一个带有另一个视图(称为bottomView)的表视图,作为子视图放置在表视图内容的底部。我想发生的是,当用户在表格视图的最底部时将其拉起时,我想在释放时将表格视图向上滑动,以使bottomView出现。为此,我实现了委托:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate: (BOOL)decelerate {
    [UIView animateWithDuration:0.1 animations:^{
        [self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 250, 0)];
    }];
}


(250是bottomView的高度)在动画块中。我希望发生的事情是使tableview向上滑动250pt,显示bottomView。奇怪的是,最终发生的事情是桌子只滑了一点点(也许是100pts),并且动作非常缓慢,大约5秒钟,而我的动画块只有0.1秒钟。

有人知道为什么会这样吗?

谢谢

最佳答案

试试这个,希望对您有所帮助



  -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
   {
        aTableView.contentInset = UIEdgeInsetsMake(0, 0, 250, 0);
   }
   -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
   {
        UIEdgeInsets insects =  aTableView.contentInset;
        if(insects.top == 0)
         {
            aTableView.contentInset = UIEdgeInsetsMake(0, 0, 250, 0);
            CGSize size = aTableView.contentSize;
            int height = size.height;
             [UIView animateWithDuration:0.2 animations:^{
                 aTableView.contentOffset = CGPointMake(0, height-250);
             }];
             aTableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
         }

   }

  -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
  {
      if(!decelerate)
       {
          UIEdgeInsets insects =  aTableView.contentInset;
         if(insects.top == 0)
         {
           CGSize size = aTableView.contentSize;
           int height = size.height;
              [UIView animateWithDuration:0.1 animations:^{
           aTableView.contentOffset = CGPointMake(0, height-250);
              }];
           aTableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
         }
      }
  }


 

根据需要调整contentOffset

10-05 21:00