Ios 当用户开始在UITableView上滚动时,是否使用alpha隐藏UIView?

Ios 当用户开始在UITableView上滚动时,是否使用alpha隐藏UIView?,ios,objective-c,uitableview,uiscrollview,alpha,Ios,Objective C,Uitableview,Uiscrollview,Alpha,viewController由两个主视图组成。容器视图和表视图 容器视图是包含所有标签(如日期和分数)的顶部部分 我希望在用户开始滚动表视图的日期时隐藏此容器视图 到目前为止,我有: - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; { [UIView animateWithDuration:0.5f animations:^{ some

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

容器视图是包含所有标签(如日期和分数)的顶部部分

我希望在用户开始滚动表视图的日期时隐藏此容器视图

到目前为止,我有:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
{
    [UIView animateWithDuration:0.5f animations:^{
        someView.alpha = 1.0f;
    }];
}
  • 为这个容器视图连接了一个
    IBOutlet
    ,这样我就可以在代码中引用它了
  • 符合
    UIScrollViewDelegate
  • UITableView
  • 我知道
    UITableView
    UIScrollView
    的一个子类。如果没有“正确的”
    UIScrollView
    ,当我在tableView中滚动时,我不知道如何使用
    scrollViewDidScroll
    方法并将容器视图alpha更改为0

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

    谢谢

    注意我没有使用UITableViewController


    您应该使用UITableViewController而不是UIViewController,然后在UITable的标题部分拖动UIView。这将导致UIView在完全没有编码的情况下直接从框中滚动出来,而不受影响

    如果您已经在控制器上设置了UITableViewDelegateIBOutlet,您将从UITableView接收所有UITableViewDelegate方法以及所有UIScrollViewDelegate方法,如果您实现了这些方法

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

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
    {
        [UIView animateWithDuration:0.5f animations:^{
            someView.alpha = 0.0f;
        }];
    }
    
    如果您想在用户停止滚动后再次显示它,只需使用方法-ScrollViewDiEndDraging:WillDecreate:

    - (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 <UITableViewDataSource, UITableViewDelegate,UIScrollViewDelegate>
    

    它会根据需要调用一次(scrollViewDidScroll:will-fire-repeated)。因此,我假设调用UIView animateWithDuration:方法之一将完成您需要的任务?

    FYI-您可以使用command+s拍摄模拟器屏幕截图。您可以使用
    ScrollViewWillBeginDraging:
    ScrollViewDiEndDraging:将减速:
    检查滚动并停止滚动。注意:我没有UITableViewControllert这是一个很好的答案,但是只有容器视图上的文本正在消失,而不是“容器”(留下一个白色矩形)。所有标签都嵌入此容器中。是否有办法解决此问题?您的容器视图是UITableView的一部分吗?它是设置为UITableView的标题还是独立视图?那么它应该隐藏自身及其所有子视图。我要检查一下接口。我看不到确切的布局,所以我只能推测可能有什么问题。同时,在视图消失时,您还需要对表格进行偏移,这样才能工作。现在你正在隐藏视图,但它仍然在那里。这是一个很好的主意,我下次肯定会用到,但我想保持目前的状态。谢谢你的投票u@Mikael,仅供将来参考,如果我将UIView拖动到标题部分,例如我的标题部分(带有多个标签),我是否能够像更改普通标签一样更改标签文本?@CescSergey,是的,因为UIView不可重复使用,所以您可以像现在一样将IBoutlet添加到其中。如果你有一个UITable,那么最好使用UITableViewController,它会让你的生活更轻松,并防止很多意外的bug。想想看,苹果为你做了编码,他们大概比我们做得更好:)@Mikael你的输入很好,非常感谢。最后一件事,你知道这方面的任何苹果示例代码吗?你不需要任何代码,只要在表格的标题中拖动一个UIView,当用户滚动时它就会滚动页面。