UITableView 滚动时隐藏工具栏元素(类似于 Facebook 的应用?)

Posted

技术标签:

【中文标题】UITableView 滚动时隐藏工具栏元素(类似于 Facebook 的应用?)【英文标题】:Hiding a toolbar element when UITableView scrolls (similar to Facebook's app?) 【发布时间】:2013-05-21 12:31:48 【问题描述】:

我怎样才能达到这个效果?

【问题讨论】:

截图的哪一部分显示了你想要的效果?是状态、照片等吗? 哦,您需要使用滚动视图委托方法来执行此操作。它只是一个位于表格视图上方的 UIView。 【参考方案1】:

从您的屏幕截图中不会立即注意到这一点,但我相信您希望该标题工具栏在用户滚动时向上滑动,对吧? (我建议澄清那部分)

您可以通过几种方式做到这一点,在所有这些方式中,您都必须实现自己的滚动逻辑,这意味着标题工具栏向上滑动的程度取决于您滚动的位置。也就是说,这是如何做到的:

1。如果您使用UITableView,我假设您已将视图控制器设置为delegate。由于UITableView 已经是UIScrollView 的子类,只需将UIScrollViewDelegate 添加到您的视图控制器即可。这将为我们提供滚动事件,因为它们发生了。您需要在 scrollViewDidScroll: 中执行您的逻辑。

2.。如果您只是使用UIScrollView,只需将您的视图控制器设置为其委托,实现UIScrollViewDelegate,然后在scrollViewDidScroll: 中执行您的逻辑。

也就是说,您的代码可能如下所示:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView 
    CGPoint scrollPos = scrollView.contentOffset;

    if(scrollPos.y >= 40 /* or CGRectGetHeight(yourToolbar.frame) */)
        // Fully hide your toolbar
     else 
        // Slide it up incrementally, etc.
    

无论如何,希望我能帮上忙。

【讨论】:

【参考方案2】:

如果您已正确设置委托,您的表格将在滚动时调用 scrollViewDidScroll:。

所以在你的控制器中,你可以添加类似的东西:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
    if (scrollView.contentOffset.y >0)    //means that the user began to scroll down the table
    
        [UIView animateWithDuration:0.4 animations:^
            //animations you want to perform
        ];
    

【讨论】:

【参考方案3】:

这里我实现了表格视图滚动时 UIView 隐藏/显示的代码。当 tableview 向下滚动时 UIView 被隐藏,当向上滚动时 UIView 显示。我希望它对你有用......!

第 1 步:- 在 .h 文件中创建一个属性

@property (nonatomic) CGFloat previousContentOffset;

第 2 步:- 在 scrollViewDidScroll 方法中写下这段代码。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 

CGFloat currentContentOffset = scrollView.contentOffset.y;

if (currentContentOffset > self.previousContentOffset) 
    // scrolling towards the bottom
    [self.subButtonView setHidden:YES];
 else if (currentContentOffset < self.previousContentOffset) 
    // scrolling towards the top
    [self.subButtonView setHidden:NO];

self.previousContentOffset = currentContentOffset; 

【讨论】:

【参考方案4】:

我为此效果创建了简单的类: UIHidingView is an ios class that displays UIView element on top UITableView which is hiding when Table View is scrolling.

【讨论】:

它工作正常。但是,这个类别有一个大问题。添加此类别后。当我们尝试使用 UIImagePickerController 呈现图库时,我们无法在 ios6 中查看相册中的照片。【参考方案5】:

这将回答你的问题:

iPhone: Hide UITableView search bar by default

相同的概念,不同的控制。您可以将 UIView 放在 tableview 的第一行或任何其他相关控件(例如按钮)上。

祝你好运。

【讨论】:

以上是关于UITableView 滚动时隐藏工具栏元素(类似于 Facebook 的应用?)的主要内容,如果未能解决你的问题,请参考以下文章

类似于 UIRefreshControl 将隐藏的 UIView 添加到 UITableView

滚动 uitableview 时 UIProgressView 被隐藏

[UIProgressView在滚动uitableview时被隐藏

UITableView 滚动类似于 Frontback 应用

UITableView 中的自定义单元格使图像在滚动时重叠

当 UITableView 开始滚动时,动画视图