현재 나는 40px 아래로 스크롤 할 때 UINavigation
톱 바를 숨기는 UICollection
입니다. 상단으로 다시 스크롤하면 UINavigation
상단 표시 줄이 다시 나타납니다.스크롤 할 때 탐색 표시 줄 맨 위로 이동 IOS
그러나이 작품은 사용자가 상단에서 스크롤 할 때뿐만 아니라 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];
}];
}
}
작성자가 '사용자가 상단에서 스크롤 할 때뿐만 아니라 40px 스크롤 할 때마다'라고 요청했기 때문에이 방법은 도움이되지 않습니다. 질문을 자세히 읽으십시오. –