2010-11-20 4 views
0

J'ai un UITabBarController à l'intérieur d'un UIPopoverController, que je montre uniquement à partir d'un UIBarButtonItem. Lorsque montré, je veux que le popover occupe la hauteur verticale maximale autorisée. Cela fonctionne très bien si je tape pour l'afficher, puis rejeter, puis faire pivoter. Cependant, si le survol est affiché en mode paysage, puis que vous faites pivoter le portrait, il ne remplira plus toute la distance verticale. La propriété de taille de contenu du contrôleur de la barre d'onglets est définie sur 320 par 1000 et j'ai même essayé de réinitialiser ce paramètre à chaque fois que le périphérique tourne. Pire encore, lorsque l'utilisateur active la barre de recherche, le survol rétrécit extrêmement petit, et reste ainsi jusqu'au redémarrage de l'application.Redimensionnement de Popover erraticly

http://cl.ly/3JdC à http://cl.ly/3JdC

également http://cl.ly/3JVF

Comment puis-je arrêter cela, et ont le popover toujours remplir la taille verticale max?

Répondre

1

Je viens de le même problème et a découvert qu'il ne se produit que lorsque je présente le UIPopoverController en utilisant la méthode:

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated 

mais il fonctionne très bien quand je l'utilise:

- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated 

Malheureusement UIBarButtonItem n'a pas de cadre Rect que vous pouvez utiliser avec cette dernière méthode donc ma solution était d'utiliser le cadre de UIToolbar et de modifier frame.origin.x et frame.size.width en conséquence pour faire apparaître le survol au bon endroit à côté du UIBarButtonItem.

Espérons qu'Apple corrigera cela dans les prochaines versions d'iOS.

salutations

+2

Je mets 'self.contentSizeForViewInPopover = CGSizeMake (0, 0); self.contentSizeForViewInPopover = CGSizeMake (320, 1000); 'dans la méthode' -viewDidAppear: 'et cela a aussi fonctionné. Bien que cela ressemble à un hack. – axiixc