2014-06-09 48 views
0

我想從UINavigationController呈現一個不透明的UIViewController。雖然視圖正在動畫,但它是如何我想要的不透明。然而,當它完成動畫時,背景變成灰色。當以前的視圖是UIViewController時,我有這個工作。當我使用UINavigationController作爲前面的視圖時,我開始出現這個問題。在UINavigationController頂部的iOS不透明的UIViewController

代碼以切換到視圖:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:STORYBOARD_IPHONE bundle:nil]; 
UIViewController *viewController = [storyBoard instantiateViewControllerWithIdentifier:viewName]; 
[self presentViewController:viewController animated:YES completion:nil]; 

代碼,使提出的觀點不透明:

self.view.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.7]; 

我覺得這可能有一些做的事實類,它是呈現視圖不是UINavigationController,而是UINavigationController中的UIViewController。所以我嘗試使用self.navigationController presentViewController,但我得到了相同的結果。

我該如何解決這個問題,使背景保持不透明?

以前的UINavigationController嵌入的UIViewController:

enter image description here

什麼樣子動畫期間:

enter image description here

什麼它看起來像動畫後:

enter image description here

+0

你在哪裏寫你的背景顏色代碼。它在viewdidload?如果是,則嘗試在viewwillappear中設置背景顏色。 – KDeogharkar

+0

是的,我正在設置viewDidLoad。我試着在viewWillAppear和viewDidAppear中設置它。我也有同樣的問題。 –

+0

你正在將你的視圖設置爲alpha 0.7,並想知道爲什麼你能看透它?你的觀點背後有什麼 - 可能是黑色背景?那和70%的白色可能會導致你的灰色。 –

回答

0

這裏有一個例行我經常使用的,看看哪些意見坐在我很感興趣,認爲背後:

// useful debugging method - send it a view and it will log all subviews 
// can be called from the debugger 
- (void) viewAllSubviews:(UIView *) topView Indent:(NSString *) indent { 
    for (UIView * theView in [topView subviews]){ 
     NSLog(@"%@%@", indent, theView); 
     if ([theView subviews] != nil) 
      [self viewAllSubviews:theView Indent: [NSString stringWithFormat:@"%@ ",indent]]; 
    } 
} 

我通常把它的地方,我可以在全球訪問它。這樣稱呼它

[self viewAllSubviews:rootViewController.view Indent:@" "]; 

它將打印到控制檯視圖樹紮根在你給什麼查看,並根據級別縮進子視圖。它應該揭示你感興趣的對象背後的東西,並且你可以檢查那裏每個視圖的幀座標。

這應該給你一個很好的線索,看看背後是什麼。

相關問題