2016-07-26 8 views
0

В моих view controller, у меня есть tableView, и я также добавить пользовательскую Панель навигации по мнению моих view controller «с, я хочу исчезнуть alpha моей пользовательской Панели навигации, но его не появляется никакой пользы, и я напечатал alpha моего обычая Панель навигации, это показывает хорошо, но мой заказ Панель навигации выглядеть без изменений на ИТС alpha, это мой код:Q: UITableView scrollViewDidScroll функция для изменения альфа пользовательского элемента Панели навигации по

#pragma mark -- scorllView delegate 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if(scrollView == _tableview){ 

     CGFloat currentOffsetY = scrollView.contentOffset.y; 
     // 0 ~ 358 -20 ~ 338 
     float alpha_of_scroll = (currentOffsetY + 20)/358.0; 

     NSLog(@"%f", alpha_of_scroll); 

     _narBarView.alpha = 1 - alpha_of_scroll; 

     NSLog(@"%f", _narBarView.alpha); 
    } 
} 

Кстати, я испытал использование reactive cocoa, он показывает как функция scrollViewDidScroll.

ответ

0

Попробуйте это:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIView *overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, CGRectGetWidth(self.navigationController.navigationBar.bounds), CGRectGetHeight(self.navigationController.navigationBar.bounds) + 20)]; 
    overlay.userInteractionEnabled = NO; 
    overlay.backgroundColor = [UIColor orangeColor]; 
    [self.navigationController.navigationBar insertSubview:overlay atIndex:0]; 

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
} 


#pragma mark -- scorllView delegate 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if(scrollView == self.myTableView){ 
     CGFloat offsetY = scrollView.contentOffset.y; 
     NSLog(@"%f", offsetY); 
     if (offsetY > -64) { 
      if (offsetY >= 0) { 
       [self setNavigationBarAlpha:0]; 
      } else { 
       [self setNavigationBarAlpha:(-offsetY/64)]; 
      } 
     } else { 
      [self setNavigationBarAlpha:1]; 
     } 
    } 
} 

- (void)setNavigationBarAlpha:(CGFloat)alpha { 
    [[self.navigationController.navigationBar subviews] enumerateObjectsUsingBlock:^(UIView *obj, NSUInteger idx, BOOL *stop) { 
     obj.alpha = alpha; 
    }]; 
} 
+0

Этот метод я нашел где-то, но мой 'navgationBar' это я обычай создал, который a' вид' 'на моем controller's' зрения. – aircraft