0

我有一个UICollectionView包含对象网格的。在它上面,在一个UICollectionView sectionHeader我有一个UISearchBar. 我希望在视图加载时隐藏搜索栏。我尝试使用以下代码来做到这一点:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // 44 = height of search bar.
    [self.collectionView setContentOffset:CGPointMake(0, 44) animated:YES];
}

这在包含collectionView许多对象时有效,当. 但是当我只有一个项目时,这不起作用,总是可见的。我想知道哪种方法最适合实现我的目标,在用户向下滚动时显示?scrollViewscrollIndicatorssearchBarUISearchBar

有什么建议么?

4

3 回答 3

1

如果您想显示UISearchBar甚至用户向下滚动,那么您可以通过以下方式执行此操作:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{
    UISearchBar *tempSearchBar = searchDisplayController.preSetSearchBar;
    CGRect rect = tempSearchBar.frame;
    rect.origin.y = MIN(0, scrollView.contentOffset.y);
    tempsearchBar.frame = rect;
}

如果你想隐藏它,那么你只需要使用:

[scrollView alwaysBounceVertical:YES]; // allows always bounce to vertical

这是默认行为,如果UIScrollbar因此通过设置值它假装集合视图它比视图具有更高的高度。

来自参考:

如果此属性设置为 YES 并且bounces 为YES,则即使内容小于滚动视图的边界,也允许垂直拖动。默认值为 NO。

于 2013-09-07T17:49:47.617 回答
0

我认为你有这个问题是因为你的内容 collectionView 大小。在设置 contentOffset 之前尝试增加它:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.collectionView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
    [self.collectionView setContentOffset:CGPointMake(0, 44) animated:YES];

}

于 2013-09-07T17:41:33.047 回答
0

您可以通过将其大小设置为零来隐藏标题视图

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
    if (headerIsActive == NO) 
        return CGSizeMake(0, 0);
    else 
        return CGSizeMake(768, 44);
}
于 2013-10-15T17:24:52.853 回答