2011-11-10 26 views
1

我用下面的代碼在我的應用程序時,一個按鈕用戶點擊:setNavigationBarHidden動畫不工作在iPad

[self.navigationController setNavigationBarHidden:NO animated:YES]; 

外觀正常的iPhone,但不是動畫在iPad上。你知道爲什麼嗎 ?

+0

你可以檢查self.navigationController是否爲空? –

+0

navigationController不爲null。導航欄顯示正確,唯一的問題是iPhone上沒有動畫。 – CedricSoubrie

+0

有沒有其他的動畫在同一時間? – Zoleas

回答

3

這裏的最佳解決方案可能是將self.navigationBar.hidden = NO;置於UIViewController的-viewWillAppear:方法中,您不希望永久隱藏該欄。

編輯:

我發現這個,可能會幫助你;

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    CGRect rect = self.navigationController.navigationBar.frame; 
    rect.origin.y = rect.origin.y < 0 ? 
     rect.origin.y + rect.size.height 
    : rect.origin.y - rect.size.height; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.2]; 
    self.navigationController.navigationBar.frame = rect; 
    [UIView commitAnimations]; 
} 
else 
{ 
    [self.navigationController setNavigationBarHidden:shouldHide animated:YES]; 
} 
+0

用戶單擊按鈕時應顯示條。所以我不能把代碼放在viewWillAppear – CedricSoubrie

+0

我剛剛編輯我的評論,看看。 – relower

+0

我想避免自己動畫,如果有更清晰的方式... – CedricSoubrie

1

你確定你是在主線程的上下文中調用它嗎?

+0

是的,無論如何它在iPhone上工作沒有任何問題 – CedricSoubrie

0

此代碼適用於我。我嘗試用iPhone的導航模板,然後爲兩個特定設備的iPad進行項目升級。並運行在iPad上。然後導航欄隱藏/顯示與iPhone應用程序一樣的動畫。

試試這個。願你有更多的想法。

感謝,

MinuMaster

+0

是的,當我開始一個新項目時,它也適用於我。所以它一定是我在我的代碼的其他工作的iPhone,但不是在iPad上... – CedricSoubrie

+0

是的,你有檢討你。可能你會發現與此相關的任何事情。 – MinuMaster

1

做檢查你有你的觀點的屬性一起寫的其他代碼。我在我的通用應用程序中使用這個片段,並且它在iPhone和iPad上都能正常工作。所以看起來像你的意見的其他設置(可能是autosizing屬性??)造成這種情況。

+0

確實你是對的!我會試着去看看我在iPad上製作動畫,而不是在iPhone上製作動畫。我現在沒有線索。 – CedricSoubrie

+0

大概發佈一些代碼可能會讓你的答案更快,但可能會出錯。 – lostInTransit