前言
今天和产品沟通,要仿照一个APP,发现这个APP上滑时隐藏navigationBar,虽然也是隐藏但是效果和其他完全不一样,因为以前没见过也没做过,所以试着去实现一下,Google了一下,发现思路主要还是从KVO来下手。
原APP的效果

实现过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   | - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {     if ([object isEqual:myTableView] && [keyPath isEqualToString:@"contentOffset"]) {                  CGFloat newY = [change[@"new"] CGPointValue].y;         CGFloat oldY = [change[@"old"] CGPointValue].y;         float i = newY - oldY;          NSLog(@"%f",myTableView.contentOffset.y);         if (myTableView.contentOffset.y > -64 && myTableView.contentOffset.y <= 24) {             if (i <= 0 && _isHide == NO && self.navigationController.navigationBar.frame.origin.y == 20){                                  return;             }             _isHide = NO;                          self.navigationController.navigationBar.frame = CGRectMake(0, -44 - myTableView.contentOffset.y, self.view.bounds.size.width, 44);                          self.navigationController.navigationBar.alpha = -myTableView.contentOffset.y/64;         }else if (myTableView.contentOffset.y > 24) {             if (i > 10) {                 _isHide = YES;             }else if(i < -10) {                 _isHide = NO;             }         }         [self.navigationController setNavigationBarHidden:_isHide animated:YES];     } }
 
  | 
 
完成效果图

总结