gpt4 book ai didi

ios - 滚动回到顶部时显示导航栏。操作系统

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:32 26 4
gpt4 key购买 nike

目前我有一个 UICollection,当您向下滚动 40px 时,我会在其中隐藏 UINavigation 顶部栏。当您向上滚动回到顶部时,UINavigation 顶部栏再次出现。

这可行,但是我希望能够在用户滚动 40px 时显示/隐藏 UINavigation 顶部栏,而不仅仅是当您从顶部滚动时。

例如,当您从顶部开始滚动时,栏会隐藏,您会滚动到 UICollectionView 的中间,然后当您开始滚动回到顶部时,UINavigation 顶部栏会再次显示。

有什么想法吗?

#pragma mark - UIScrollViewDelegate Methods
-(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0f){
return;
}

CGRect frame = self.navigationController.navigationBar.frame;
frame.origin.y = 20;
}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0f){
return;
}

CGFloat offsetY = scrollView.contentOffset.y;
CGFloat contentHeight = scrollView.contentSize.height - 300;
if (offsetY > contentHeight - scrollView.frame.size.height)
{
[self.homePaginator fetchNextPage];
}

CGRect frame = self.navigationController.navigationBar.frame;
CGFloat size = frame.size.height - 25;

if([scrollView.panGestureRecognizer translationInView:self.view].y < 0)
{
frame.origin.y = -size;

if(self.navigationController.navigationBar.items.count > 0){

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
animations:^{

CGFloat navBarHeight = 25.0f;
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, navBarHeight);
[self.navigationController.navigationBar setFrame:frame];
}
completion:^(BOOL finished) {

self.navigationItem.titleView.alpha = 0;
self.piccingTitleIcon.alpha = 0;
self.navigationItem.rightBarButtonItem = nil;

}];
}
}
else if([scrollView.panGestureRecognizer translationInView:self.view].y > 0)
{

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
CGFloat navBarHeight = 64.0f;
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, navBarHeight);
[self.navigationController.navigationBar setFrame:frame];
self.navigationItem.titleView.alpha = 1;
self.piccingTitleIcon.alpha = 1;
self.btnSearch = [[UIBarButtonItem alloc] initWithCustomView:self.searchIconButton];
[self.navigationItem setRightBarButtonItem:self.btnSearch];
}
completion:^(BOOL finished) {

[self performSelector:@selector(addIconsToNavBar) withObject:nil afterDelay:-1.0];
}];
}
}

最佳答案

试试这个!

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint scrollOffset = scrollView.contentOffset;
if (scrollOffset.y >= 40) {
if (![self.navigationController isNavigationBarHidden]) {
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
} else {
if ([self.navigationController isNavigationBarHidden]) {
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
}
}

关于ios - 滚动回到顶部时显示导航栏。操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24301586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com