2011-02-09 70 views
1

我知道這個問題曾被問及(並解決過),但這不會爲我工作。事實上,我已經解決了這個問題,但這個問題沒有任何意義,讓我頭痛。iPad/iPhone uiSearchbar透明背景

我無法將我的UISearchBar的背景設置爲透明。 我一直在使用:

searchBar.backgroundColor = [UIColor clearColor]; 
[[searchBar.subviews objectAtIndex:0] removeFromSuperview]; 

它的工作很好......但突然它停了下來。可能是因爲我升級了我的xcode版本,但我不確定。 我花了幾個小時已經在調查這個.. 有人在那裏做這個?請指向正確的方向。 謝謝堆!!!

問候 牛逼

+0

看到我的答案在這裏。 http://stackoverflow.com/a/10647443/751026 – thesummersign 2012-05-18 06:06:04

回答

10

嘗試通過您的子視圖循環,並尋找合適的類:

for (UIView *subview in searchBar.subviews) { 
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) { 
     [subview removeFromSuperview]; 
     break; 
    } 
} 

我不知道,但我不認爲你可以假設指數0是背景圖。 上面的例子適用於我。

+0

雖然它的工作原理,我可能不會建議在生產中這樣做。據我所知,這是沒有記錄在API中,所以有可能在任何操作系統更新您的代碼可能會停止工作。我認爲做你想做的最好的方法是編寫你自己的搜索欄。 – 2011-02-09 11:22:54

+0

感謝您的意見。我連接了一個新的uisearchbar,突然之間舊的工作正常......怪異! – Tom 2011-02-09 12:44:05

0

它仍然適用於我,所以也許在你的代碼中的其他東西混淆了它。你確定searchBar是否正確設置(在IB中連接插座,在視圖初始化後調用呼叫等等)? 最好的方法是打印出[searchBar.subviews objectAtIndex:0]的內容,它應該是一個UISearchBarBackground對象。 而且順便說一句,既然蘋果能夠改變他們想要的UISearchBar視圖層次任何時候,你最好做一些檢查:searchBar.subviews.count和

if ([[searchBar.subviews objectAtIndex:0] class] == NSClassFromString(@"UISearchBarBackground")) ... 

調用之前。

0

您只需要將searchBarStyle屬性更改爲UISearchBarStyleMinimal。默認情況下它是UISearchBarStyleProminent。您可以在故事板或代碼中更改它,如下所示。

self.yourSearBar.searchBarStyle = UISearchBarStyleMinimal;