2013-12-20 3 views
0
  1. Я был в AUIController, то navigationController.navigationBar.alpha == 0,500
  2. Я нажал на кнопку домой.
  3. Я щелкнул appIcon, чтобы вернуться к AUICконтроллеру. navigationController.navigationBar.alpha to 1.000

как сделать, чтобы сохранить навигациюController.navigationBar's alpha = 0.5000;Изменена альфа альфа-навигатора? Когда приложение становится активным из фона

я был попробовать ..

AUIController : UIViewController <...,UINavigationControllerDelegate> 

- (void) navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

    if (viewController == self) { 
      //NSLog(@"self"); 
     //self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.000 green:0.000 blue:0.000 alpha:1.000]; 
      self.navigationController.navigationBar.alpha = 0.500; 
      self.navigationController.navigationBar.translucent = YES; 
     } else { 
      self.navigationController.navigationBar.alpha = 1.000; 
      self.navigationController.navigationBar.translucent = NO; 
     } 
    } 

Но когда приложение становится активным, альфа 0,50 становится 1,00 willShowViewController нельзя назвать

ответ

2

Вы можете использовать KVO для этого. В viewDidLoad из AUIController добавить этот код [self.navigationController.navigationBar addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:(__bridge void *)(self)];

и реализовать эту функцию:

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    NSLog([change description]); 
    UIViewController *viewController = (__bridge UIViewController*)context; 
    if ([viewController isKindOfClass:[AUIViewController class]]) { 
     if (self.navigationController.navigationBar.alpha == 1) { 
      self.navigationController.navigationBar.alpha = 0.500; 
      self.navigationController.navigationBar.translucent = YES; 
     } 
    } 
} 
+0

Большое спасибо! Я был очень доволен вашим удивительным ответом и чудесным решением! –

+0

Добро пожаловать – sahara108

0

просто записать следующий код в методе

AppDelegate .m файл.

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 

    int count=self.navigationController.viewControllers.count; 

    if([[[self.navigationController viewControllers] objectAtIndex:count-1] isKindOfClass:[AUIController Class]]) 
    { 
     self.navigationController.navigationBar.alpha = 0.500; 
     self.navigationController.navigationBar.translucent = YES; 
    } 
    else 
    { 
     self.navigationController.navigationBar.alpha = 1.000; 
     self.navigationController.navigationBar.translucent = NO; 
    } 
} 

Надеюсь, это поможет вам.

+0

будет установлен нормально, но после установки альфа (около 1 секунды), то navigationController.navigationBar будет обнулен 1.000 поблагодарить у –

0
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    self.navigationBar.translucent = NO; 
    [self.navigationController.layer removeFromSuperlayer]; 
} 

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    self.navigationBar.translucent = YES; 

} 
+0

, если я удалю слой, он будет наличными. Спасибо u –

Смежные вопросы