2013-12-20 28 views
0
  1. 成爲活動我是在AUIController的navigationController.navigationBar.alpha == 0.500
  2. 我按了home鍵。
  3. 我點擊appIcon get返回AUIController。 navigationController.navigationBar.alpha爲1.000

我該怎麼做才能保持navigationController.navigationBar的alpha = 0.5000;navigationController的alpha將重置?當應用程序從背景

我曾嘗試..

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來做到這一點。在AUIControllerviewDidLoad添加以下代碼[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

如果我刪除它會現金的層謝謝你 –

相關問題