2013-10-04 38 views
4

我有一個UISearchBar動畫的問題。UISearchBar狀態欄動畫轉換錯誤ios7

當狀態欄打開時,動畫出現問題。否則它是好的。 我以編程方式創建了tableview和searchbar。 uisearchbar在tableview的headerview中。保持這種狀態很重要。當你使用故事板時,我知道它的工作正常。

我創建了一個非常基本的示例項目,因爲我認爲這是向您顯示問題的最簡單方法。 我花了幾個小時找到解決方案,但我無法弄清楚。任何幫助將不勝感激。

下面是示例項目的鏈接:SearchBarProject

+0

你解決這個問題我有同樣的問題,開闢了另一個問題 - > http://stackoverflow.com/questions/19467945/ios7-uisearchbar-animation-issue – luca

+0

不,我結束了使用的displaysSearchBarInNavigationBar方法將搜索欄放到導航欄中。這不正是我要去的,但它會做到這一點。如果你找到一個解決方案,你可以把它作爲一個連接器在這裏?謝謝 –

回答

1

我認爲這是IOS 7的bug。有一個由蘋果提供的uitableview search example應用程序。編輯搜索欄時,它也有同樣的問題。與iOS 6是沒有任何問題的

+0

是的,我認爲這也是一個錯誤。我看到了這個示例項目,並且它也有類似的問題。我找不出解決這個問題的方法。我結束了使用displaysSearchBarInNavigationBar方法並將搜索欄放入導航欄。這不正是我要去的,但它會做到這一點。 我希望他們能儘快修復它,或者有人找到解決方法。 –

+3

我發現IOS 7的問題,你必須設置edgesForExtendedLayout如:self.edgesForExtendedLayout = UIRectEdgeNone; –

+0

這樣比較好,但動畫仍然看起來很怪。 –

2

我發現

self.navigationController.navigationBar.translucent = YES; 

使我的動畫bug更少

+0

,雖然很煩人,我必須補償顏色變化。 – Ken

-1

只是一個子層添加到的UISearchBar和更改視圖的背景顏色將會使動畫近乎完美

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller { 
    self.view.backgroundColor = RGB(199,199,204); 

    self.fixSearchAnimation = [[UIView alloc] initWithFrame:CGRectMake(0, -20,320, 40)]; 
    self.fixSearchAnimation.backgroundColor = RGB(199,199,204); 
    [self.searchController.searchBar addSubview:self.fixSearchAnimation]; 
    [self.searchController.searchBar sendSubviewToBack:self.fixSearchAnimation]; 
} 
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller { 
    self.view.backgroundColor = [UIColor whiteColor]; 
    [self.fixSearchAnimation removeFromSuperview]; 
} 

在低速模式下,你仍然可以看到搜索欄原點子視圖和新視圖之間的微小的線,但它不是很明顯的我們呃,如果這打擾了你,你可以深入到UISearchbar的視圖層次,並把視圖放在正確的位置。

+1

這是appaling – Terminus