2010-09-22 13 views
6

Comment obtenir un UISegmentedControl similaire à celui de l'application Mail, de sorte qu'il soit de la même couleur que les boutons UIToolbar (comme si les deux segments étaient à l'état sélectionné).UISegmentedControl dans l'application Mail

Je souhaite utiliser le contrôle segmenté exactement dans le même but que Mail.

(sur l'iPad, donc un gris pas de couleur bleue)

+0

Vous ne pouvez pas changer la teinte? –

+0

Ok, mais à quelle valeur? –

Répondre

1

Le style que je cherche est non documentée: il est le style 4. On dirait qu'il haut/bas contrôle ici: http://media.mobilemeandering.com/wp-content/uploads/2010/04/ipad-mail-message-2.png (pas mon image btw)

Il fait essentiellement tous les segments sélectionnés semblent, il est destiné aux poussées momentanées, et est effectivement plusieurs boutons de la barre d'outils poussés ensemble. Il ne peut donc pas être défini dans IB mais doit être défini dans le code ou manuellement dans le fichier nib/xib, en ouvrant la pointe en tant que fichier texte.

1

Je ne sais pas exactement ce que vous voulez dire .. mais je crois pourrait-il être le « UISegmentedControlStyleBar » comme segmentedControlStyle.

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar 

Vous pouvez également définir cette propriété dans IB! (C'est la propriété appelée "style")

+0

Je sais mais merci de répondre, ce que je veux dire est dans le Mail le contrôle segmenté (les boutons haut et bas) est la même couleur qu'un UIbarbuttonitem, mais j'ai ajouté un contrôle segmenté dans IB et il était visible plus léger. –

6

Ceci est le code de Apple Exemples de codes ... NavBar et les deux images utilisées dans le code .. vous devriez pouvoir obtenir exactement la même vue que le courrier App.

alt textalt text

// "Segmented" control to the right 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems: 
              [NSArray arrayWithObjects: 
               [UIImage imageNamed:@"up.png"], 
               [UIImage imageNamed:@"down.png"], 
              nil]]; 
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 
segmentedControl.frame = CGRectMake(0, 0, 90, 30); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.momentary = YES; 

defaultTintColor = [segmentedControl.tintColor retain]; // keep track of this for later 

UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 
[segmentedControl release]; 

self.navigationItem.rightBarButtonItem = segmentBarItem; 
[segmentBarItem release]; 
+0

J'utilise l'iPad, ce code est pour iPhone, en ce que c'est la mauvaise couleur –

+0

opss .. J'ai manqué que .. pas beaucoup d'idée abt ipad .. bonne chance – kthorat

3

Vous cherchez la propriété tintColor! Lorsque vous utilisez un UISegmentedControl vous pouvez changer sa couleur de teinte à n'importe quelle couleur que vous pouvez imaginer. Donc, si vous avez ajouté le UISegmentedControl dans Interface Builder alors vous ce style dans votre méthode - (void)viewWillAppear:(BOOL)animated en tant que telle (en supposant que vous aviez accroché à un Ivar @synthesized:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    // Set the tintColor to match the navigation bar 
    self.mySegmentedControl.tintColor = [UIColor colorWithRed:.94 green:.94 blue:.94 alpha:1]; 

    ... do whatever else in your viewWillAppear ... 
} 

Maintenant, évidemment, vous voulez jouer avec le rouge, vert, bleu et alpha que j'ai mis dans l'exemple de code ci-dessus, mais vous pouvez littéralement colorer le UISegmentedController n'importe quelle couleur que vous voulez (ou le rendre aussi transparent que vous le souhaitez), donc c'est juste une question de trouver les valeurs RGBA qui ont l'air parfait pour vous.

Rappelez-vous que par les docs d'Apple qui the default value of this property is nil (no color). UISegmentedControl uses this property only if the style of the segmented control is UISegmentedControlStyleBar.

Bonne chance!

+0

Merci, mais je sais de cela, je dois savoir quelle teinte Couleur à utiliser pour obtenir la même teinte qu'un UIBarButtonItem normal. Y a-t-il une propriété privée d'un objet UIBarButton que je peux utiliser pour obtenir la valeur –

+0

Essayez le rouge: .15 vert: .19 bleu: .31. Comme je l'ai dit, il suffit de jouer un peu pour obtenir la couleur * exacte * que vous voulez. Il y a un outil astucieux qui vient avec OS X appelé DigitalColor Meter (il est dans Applications/Utilities). Vous pouvez l'utiliser pour passer la souris sur tout ce qui se trouve sur votre écran et vous obtiendrez le combo de couleurs exact que vous recherchez. –

+0

Eh bien .15, .19 et .31 sont loin d'être les autres boutons, mais je suppose que je dois juste bricoler :( –

0

Je ne suis pas sûr de comprendre exactement ce que vous essayez de faire, mais je vais essayer.

La solution n'est pas évidente, vous devez utiliser un UISearchDisplayController afin d'obtenir un UISearchBar et UISegmentedControl correspondant.

Voir l'exemple de code TableSearch pour un exemple.

+0

iPad, pas iPhone? –

+0

Le code est le même pour l'iPad ... – christo16

+0

Cependant, l'écran est plus grand, donc je ne veux pas de barre de recherche, j'ai aussi besoin d'autres éléments de barre à côté du contrôle segmenté. –