2012-10-20 3 views
3

J'essaie d'ajouter un UISearchBar sans la bordure qui l'entoure, mais cela ne fonctionne tout simplement pas.Comment implémenter UISearchBar sans bordure

C'est ce que j'ai:

Sur le fichier XIB, j'ai ajouté UISearchBar. Style = Noir Transparent. Teinte = Par défaut. Aucune des options (signets, bouton d'annulation, barre d'étendue, etc.) n'est sélectionnée. Arrière-plan = par défaut. Dessin = opaque (essentiellement le paramètre par défaut de l'UISearchBar).

J'ai une propriété pour UISearchBar - searchBar. Dans le fichier de mise en œuvre, lorsque les charges de vue, j'ai:

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

Mais pour une raison quelconque, l'arrière-plan (la bordure noire autour de la boîte) est tout simplement ne va pas. J'ai essayé [[self.searchBar.subviews objectAtIndex: 0] setAlpha: 0], mais cela ne fonctionne pas du tout non plus.

Une aide s'il vous plaît?

Répondre

4

Voici le code .....

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

heureux codage :)

1

Que diriez-vous:

[self.searchBar setOpaque:NO]; 
+0

Ne fonctionne pas pour moi. – testing

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

Espoir ce travail pour vous, son travail pour moi.

+0

Ne travaillait pas pour moi. La barre de recherche n'est pas affichée du tout et la vue ne répond pas correctement aux taps. En utilisant iOS 8. – testing

1

ce travail uniquement dans statique UISearchBar, pas si vous voulez montrer la recherche CancelButton, ce problème se produire dans les appareils ayant ios ci-dessus 5.0. Pour cela, vous devez modifier/définir BackgroundView de UiSearchBar.

1

Essayez cette

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

Cela a fonctionné pour moi

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

Pour ceux de vous en utilisant 8.0 et au-dessus, le meilleur solut ion est d'utiliser simplement le protocole UIAppearance, en procédant comme suit:

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

Vous pouvez aussi le faire sur une instance spécifique:

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

si quelqu'un a le même problème que moi (voir photo) code ci-dessus pourrait corriger

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