美文网首页iOS开发
TableView点击的时候,让tabbar下移到消失,nav隐

TableView点击的时候,让tabbar下移到消失,nav隐

作者: BabyNeedCare | 来源:发表于2019-07-10 11:31 被阅读0次

TableView点击的时候,让tabbar下移到消失,nav隐藏,停止滑动的时候tabbar和nav出现

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
    if (_clickedCounter % 2 == 0){
        [UIView animateWithDuration:1 animations:^{
            self.tabBarController.tabBar.transform = CGAffineTransformMakeTranslation(0, 49);
            [UIView animateWithDuration:5 animations:^{
                self.navigationController.navigationBar.alpha = 0;
            }];
        }];
    }else {
        
        [UIView animateWithDuration:1 animations:^{
            self.tabBarController.tabBar.transform = CGAffineTransformIdentity;
            self.navigationController.navigationBar.alpha = 1;
        }];
    }
    
    _clickedCounter++;
}

类似使用还有scrollView滑动页面的时候

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    [UIView animateWithDuration:1 animations:^{
        self.tabBarController.tabBar.transform = CGAffineTransformMakeTranslation(0, 49);
        [UIView animateWithDuration:5 animations:^{
            self.navigationController.navigationBar.alpha = 0;
        }];
    }];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    [UIView animateWithDuration:1 animations:^{
        self.tabBarController.tabBar.transform = CGAffineTransformIdentity;
        self.navigationController.navigationBar.alpha = 1;
    }];
}



更为推荐的是以下方法,可以在有scrollview, 或tableview的地方使用

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];
    
    if (translation.y>0) {

        [UIView animateWithDuration:0.3 animations:^{
            
            [self setTabBarHidden:NO];
            
            [self.navigationController setNavigationBarHidden:NO animated:YES];
            
            NSLog(@"Show");
            
        }];
    }else if(translation.y<0){

        [UIView animateWithDuration:0.3 animations:^{
            
            [self setTabBarHidden:YES];
            
            [self.navigationController setNavigationBarHidden:YES animated:YES];
            
            NSLog(@"Hide");
        }];

    }
}


//隐藏显示tabbar

- (void)setTabBarHidden:(BOOL)hidden{
    
    UIView *tab = self.tabBarController.view;
    
    CGRect  tabRect=self.tabBarController.tabBar.frame;
    
    if ([tab.subviews count] < 2) {
        
        return;
        
    }

    UIView *view;
    
    if ([[tab.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) {
        
        view = [tab.subviews objectAtIndex:1];
        
    } else {
        
        view = [tab.subviews objectAtIndex:0];
        
    }
    
    
    if (hidden) {
        
        view.frame = tab.bounds;
        
        tabRect.origin.y=[[UIScreen mainScreen] bounds].size.height+self.tabBarController.tabBar.frame.size.height;
        
    } else {
        
        view.frame = CGRectMake(tab.bounds.origin.x, tab.bounds.origin.y, tab.bounds.size.width, tab.bounds.size.height);
        
        tabRect.origin.y=[[UIScreen mainScreen] bounds].size.height-self.tabBarController.tabBar.frame.size.height;
        
    }
    
    [UIView animateWithDuration:0.5f animations:^{
        
        self.tabBarController.tabBar.frame=tabRect;
        
    }completion:^(BOOL finished) {
 
    }];
}

相关文章

网友评论

    本文标题:TableView点击的时候,让tabbar下移到消失,nav隐

    本文链接:https://www.haomeiwen.com/subject/qxickctx.html