由於本身用簡書和知乎比較多,因此對其導航欄的效果比較好奇,本身私下裏找資料實現了一下。這個效果的關鍵點在於下方可供滑動的內容的便宜距離inset的改變,以及滑動的scrollview代理的執行,廢話很少說,上代碼動畫
首先是tableview的便宜距離inset的設置 if([self respondsToSelector:@selector(automaticallyAdjustsScrollViewInsets)]) { self.automaticallyAdjustsScrollViewInsets = NO; UIEdgeInsets insets = self.tableView.contentInset; insets.top =self.navigationController.navigationBar.bounds.size.height; self.tableView.contentInset =insets; self.tableView.scrollIndicatorInsets = insets; } self.tableView.frame =CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height);
上述代碼的做用是在執行的時候自動改變tableview的便宜距離的相關設置,下一步在滑動的時候隱藏導航欄代理
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { if(velocity.y>0) { self.navigationController.navigationBar.hidden = YES; } else { self.navigationController.navigationBar.hidden = NO; } }
由此便實現了簡書和知乎的導航欄顯示和隱藏的效果,各位能夠自行添加動畫。blog