用户在UITableView上滚动时使用alpha隐藏UIView?

viewController由2个主视图组成。 容器视图和表视图。

容器视图是顶部,包含所有标签,例如日期和分数。

当用户开始滚动表视图的日子时,我希望隐藏此容器视图。

到目前为止我有:

  1. 为此容器视图添加了一个IBOutlet ,以便我可以在代码中引用它。
  2. 符合UIScrollViewDelegate
  3. 简化了UITableView所需的所有方法

我知道UITableViewUIScrollView的子类。 没有“正确的” UIScrollView我很困惑如何使用scrollViewDidScroll方法并在我在tableView中滚动时将容器视图alpha更改为0。

我还希望当用户停止滚动时alpha返回1。

谢谢。

注意我没有使用UITableViewController

截图

您应该使用UITableViewController而不是UIViewController,然后在UITable的标题部分中拖动UIView。 这将导致UIView在没有编码的情况下立即开始滚动。

如果您已经将UITableViewDelegate IBOutlet设置为您的控制器,您将从UITableView以及所有UIScrollViewDelegate方法接收所有UITableViewDelegate方法,如果您实现它们。

如果您想在用户开始滚动时隐藏特定视图,我会使用-scrollViewWillBeginDragging方法

 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; { [UIView animateWithDuration:0.5f animations:^{ someView.alpha = 0.0f; }]; } 

如果您想在用户停止滚动后再次显示它,只需使用方法-scrollViewDidEndDragging:willDecelerate:

 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; { [UIView animateWithDuration:0.5f animations:^{ someView.alpha = 1.0f; }]; } 

直接在控制器中使用以下方法。 他们会工作:

 // called on start of dragging (may require some time and or distance to move) - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; // called on finger up if the user dragged. decelerate is true if it will continue moving afterwards - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; 

你有什么UIScrollViewDelegate?

我刚刚在当前项目中使用了UITableViewController并添加了UIScrollViewDelegate

  @interface YourTableViewController : UITableViewController  

然后发表评论

 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

并根据需要调用一次(scrollViewDidScroll:将反复触发)。 所以我假设调用一个UIView animateWithDuration:方法将完成你需要的任务?