2014-08-29 129 views
1

在我的選項卡式應用程序中,主視圖是一個UITableView,它包含一個隱藏的searchBar(直到向下滾動並顯示,就像郵件應用程序一樣)。iOS 7 - 使用setToolbarHidden導航控制器工具欄問題:animation

在導航欄中,有一個按鈕,它將帶有動畫的導航控制器的工具欄顯示出來。

工具欄位於tabBar上方。

的問題是:

  • 的動畫不流暢,有一種黑色十歲上下背景的工具欄前,實際顯示了

  • 當隱藏的導航欄的工具欄,動畫帶來了下來searchBar也是如此,它不應該。這就像整個視圖被滑落。

我正在使用的代碼是

-(void)showToolbar{ 
    [UIView animateWithDuration:0.3 animations:^{ 
     [self.navigationController setToolbarHidden:NO animated:YES]; 
     [self.navigationController.toolbar setAlpha:1.0]; 
    }completion:nil]; 
} 


-(void)hideToolbar{ 
    [UIView animateWithDuration:3.0 
        animations:^{ 
         [self.navigationController setToolbarHidden:YES animated:YES]; 
         [self.navigationController.toolbar setAlpha:0.0]; 
        } 
        completion:nil]; 
} 

這裏就是我得到的GIF(模糊隱私原因)

任何建議表示讚賞。

+0

我認爲,黑斜槓是你的背景色彩控制器?告訴我你在哪裏添加了工具欄 – Pawan 2014-08-31 18:12:27

+0

不,我不這麼認爲,我在另一個應用中使用了相同的代碼,並且它很流暢。我想這與半透明或某事有關,我不明白。我不在任何地方添加工具欄,它是在navigationController中構建的工具欄。 – Phillip 2014-08-31 18:24:34

+0

我使用相同的代碼來顯示/隱藏工具欄,我沒有任何問題。我的猜測是有其他代碼影響此.. – Mike 2014-08-31 19:32:16

回答

1

我認爲在工具欄實際顯示之前黑色背景的原因是它顯示了你的應用程序窗口的背景色。如果你這樣做

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    [self.window setBackgroundColor:[UIColor yellowColor]]; 
    return YES; 
} 

然後,它顯示黃色的背景前,工具欄coming.It將顯示任何顏色你在你的應用程序中設置主窗口顯示它。 它顯示,因爲在你的showtoolbar運行0.3秒,在這段時間你的工具欄阿爾法從0.0改變到1.0,所以一些毫秒它將是空白的。

因此,解決辦法是可以改變的持續時間爲0.1或您可以在同一的backgroundColor設置爲您的UIWindow .. :)

+0

夥計非常感謝!這是一個乾淨的解決方法,並解決了第一步,但是您是否知道爲什麼整個視圖在隱藏時會滑落? – Phillip 2014-09-01 07:46:28

+0

這是[self.navigationController setToolbarHidden:YES animated:YES] – BHASKAR 2014-09-01 07:57:31

+0

嗯所以如果我只是使用setToolbarHidden我會得到相同的效果嗎?這很奇怪,因爲在另一個應用程序中,它只是正確滑動而不會滑動整個視圖。 – Phillip 2014-09-01 08:01:40