2012-10-20 59 views
3

我想添加一個UISearchBar而沒有邊框,但它根本無法工作。如何實現無邊界的UISearchBar

這是我有:

在XIB文件,我添加的UISearchBar。款式=黑色透明。 Tint =默認。沒有選項(書籤,取消按鈕,範圍欄等)被選中。背景=默認。繪圖=不透明(基本上是UISearchBar的默認設置)。

我有一個屬性爲UISearchBar - searchBar。 在實現文件中,當視圖加載,我有:

[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview]; 

但無論出於何種原因,背景(環繞箱,深色邊框)根本就沒有去。 我試過[[self.searchBar.subviews objectAtIndex:0] setAlpha:0],但這根本不起作用。

請幫忙嗎?

回答

4

下面是代碼.....

for (id img in searchBar.subviews) 
{  
    if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
    {  
      [img removeFromSuperview];  
    } 
} 

編碼快樂:)

1

如何:

[self.searchBar setOpaque:NO]; 
+0

不適用於我。 – testing

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

希望這對你的工作,它爲我工作。

+0

沒有爲我工作。搜索欄根本沒有顯示,視圖也沒有正確響應點擊。使用iOS 8。 – testing

1

此工作只在靜態UISearchBar中,而不是如果要顯示搜索CancelButton,則此問題發生在具有5.0以上的ios的設備上。 爲此你必須改變/設置UiSearchBar的BackgroundView。

1

嘗試這個

for (UIView * view in [mySearchBar subviews]) { 
    if (![view isKindOfClass:[UITextField class]]) { 
    view .alpha = 0; 
    } 
    } 
5

這爲我工作

for (UIView * view in [[[self.searchBar subviews] objectAtIndex:0] subviews]) 
{ 
    if (![view isKindOfClass:[UITextField class]]) 
    { 
     view .alpha = 0; 
    } 
} 
1

對於那些你使用8.0及以上,最好的解決方案離子是簡單地使用UIAppearance協議,通過執行以下操作:

[[UISearchBar appearance] setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 

你也可以做一個具體的實例有:

[mySearchBar setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 
0

如果有人爲我(見圖片)相同的問題上面的代碼可以修復

[self.tableView setContentInset:UIEdgeInsetsMake(-1, 0, 0, 0)];