2011-11-11 5 views
3

J'ai un UIPickerView affiché à l'intérieur d'un UIPopoverController. Les dimensions du UIPickerView sont: 320x216. Pour une raison quelconque, le UIPickerView semble être ~ 3/5 de la bonne hauteur, et les UIPopoverController s'étendent jusqu'au bas de l'écran.UIPopoverController trop grand et UIPickerView trop petit

S'il vous plaît voir le code ci-dessous.

Merci!

self.picker = [[[UIPickerView alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height+44, 320, 216)] autorelease]; 
self.picker.backgroundColor = [UIColor clearColor]; 
self.picker.showsSelectionIndicator = YES; 
self.picker.delegate = self; 
self.picker.dataSource = self; 
self.picker.transform = CGAffineTransformMakeScale(-1, 1); 
UIViewController *pickerController = [[UIViewController alloc] init]; 
[pickerController setView:self.picker]; 
UIPopoverController *pickerPopover = [[UIPopoverController alloc] initWithContentViewController:pickerController]; 
[pickerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
pickerPopover.delegate = self; 
self.popover = pickerPopover; 
[pickerController release]; 
[pickerPopover release]; 
+0

Juste pour toute personne googler à cela, ne vous oublie pas simplement définir la hauteur de la colonne d'un sélecteur, avec l'appel de délégué ... - (CGFloat) pickerView: (UIPickerView *) pickerView ** rowHeightForComponent: ** (composant NSInteger) {return 30.0; } (n'oubliez pas dans votre fichier .h!) – Fattie

Répondre

8

La raison de la vue du sélecteur "aplaties" semble être cette ligne:

[pickerController setView:self.picker]; 

Au lieu de cela, ajoutez la vue Préparateur en tant que sous-vue:

[pickerController.view addSubview:picker]; 


Ensuite, pour régler la hauteur de survol, réglez popoverContentSize avant de le présenter:

pickerPopover.popoverContentSize = picker.frame.size; 


En outre, fixer le cadre de vue sélecteur de ceci:

CGRectMake(0, self.view.bounds.size.height+44, 320, 216) 

à ceci:

CGRectMake(0, 0, 320, 216) 
+0

Merci! Ça a marché! Juste une question - pourquoi utiliser 'setView:' cause un problème? – joshim5

+0

C'est une autre bonne question. Pas sûr mais ressemble à un problème avec la vue du sélecteur. – Anna