2010-07-19 39 views
10

Dans mon application iPad Viseur (iTunes Link), je suis en train de recréer l'apparence d'un UISegmentedControl comme on le voit dans le pied de la construction de Keynote Dans popover:L'utilisation d'un UISegmentedControl dans le pied de UIPopoverController

Keynote

L'iPad HIG suggère d'utiliser un UIToolbar aligné en bas, mais l'apparence est incorrecte. Cette capture d'écran montre Black Opaque, mais aucun des styles standard ne correspond à Keynote.

Viewfinder

Tous les conseils sur recréer le look Keynote serait apprécié. Si vous n'avez pas Keynote sur l'iPad, vous pouvez voir la même technique dans le pied de page du popover Bookmarks dans Maps.

Répondre

18

Ce dont vous avez besoin est de définir le toolbarItems de votre UIViewController haut dans votre UIPopover et de le configurer correctement. Considérez quelque chose comme ceci:

 NSArray *segmentedItems = [NSArray arrayWithObjects:@"Bookmarks", @"Recents", @"Contacts", nil]; 
     UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithItems:segmentedItems]; 
     ctrl.segmentedControlStyle = UISegmentedControlStyleBar; 
     ctrl.selectedSegmentIndex = 0; 

     UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:ctrl]; 
     ctrl.frame = CGRectMake(0.0f, 5.0f, 320.0f, 30.0f); 

     NSArray *theToolbarItems = [NSArray arrayWithObjects:item, nil]; 
     [self setToolbarItems:theToolbarItems]; 
     [ctrl release]; 
     [item release]; 

EDIT: Maintenant, je l'ai eu, il suffit de ne pas régler la tintColor, il héritera de la bonne couleur (quel qu'il soit). La capture d'écran ci-dessous est parfaitement identique à celui de Google Maps App:

alt text http://www.memorylifter.com/services/dev/linklist/SCREENSHOT_TABBAT.png

+0

les boutons de contrôle segmentés ne semblent toujours pas bien, cependant. –

+0

Comme je l'ai écrit, vous devez déterminer la couleur correcte de tintColor et la définir en appelant ctrl.tintColor = [UIColor whateverColor]. Vous pouvez essayer d'utiliser Photoshop pour obtenir la couleur. Comme je n'ai pas Photoshop, et aucune autre possibilité d'obtenir le code couleur des captures d'écran, je choisis simplement une couleur arbitraire. Aussi, je ne me sens pas essayer au hasard en ce moment. – thatsdisgusting

+0

Donc, le tintColor va changer la couleur des boutons, pas seulement l'arrière-plan? –

-1

il semble qu'ils placent le contrôle segmenté dans la vue pied de page de tableView. (première capture d'écran). J'essaierais cela si possible, sinon vous pourriez peut-être travailler sur le sous-classement de UIToolbar et sur le remplacement de drawRect: pour obtenir le look que vous voulez.

+0

Je travaille à faire quelque chose de très similaire maintenant et j'ai trouvé cette question avec ma réponse inutile. intéressant. –

1

Je viens de croiser cette question. Vous devez pousser un UINavigationController dans UIPopover. Votre vue devrait alors être incluse dans ce contrôleur de navigation. Cela obtient la barre du haut (barre de navigation pour bien formater). Je suppose que la barre inférieure suit cela mais je ne l'ai pas testé!