Est-il possible de changer la hauteur de UIPickerView? Certaines applications semblent avoir des PickerViews plus courts, mais la définition d'un cadre plus petit ne semble pas fonctionner et le cadre est verrouillé dans Interface Builder.
Est-il possible de changer la hauteur de UIPickerView? Certaines applications semblent avoir des PickerViews plus courts, mais la définition d'un cadre plus petit ne semble pas fonctionner et le cadre est verrouillé dans Interface Builder.
Réponses:
Il semble évident qu'Apple n'invite pas particulièrement le déblayage avec la hauteur par défaut du UIPickerView
, mais j'ai constaté que vous pouvez obtenir un changement de hauteur de la vue en prenant le contrôle complet et en passant une taille d'image souhaitée au moment de la création, par exemple:
smallerPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];
Vous découvrirez qu'à différentes hauteurs et largeurs, il y a des problèmes visuels. De toute évidence, ces problèmes devraient être résolus d'une manière ou d'une autre, ou choisir une autre taille qui ne les présente pas.
Aucune des approches ci-dessus ne fonctionne sous iOS 4.0
La hauteur du pickerView n'est plus redimensionnable. Il y a un message qui est sauvegardé dans la console si vous essayez de changer le cadre d'un sélecteur dans 4.0:
-[UIPickerView setFrame:]: invalid height value 66.0 pinned to 162.0
J'ai fini par faire quelque chose d'assez radical pour obtenir l'effet d'un sélecteur plus petit qui fonctionne à la fois sous OS 3.xx et OS 4.0. J'ai laissé le sélecteur à la taille que le SDK décide qu'il devrait être et j'ai plutôt créé une fenêtre transparente coupée sur mon image d'arrière-plan à travers laquelle le sélecteur devient visible. Ensuite, placez simplement le sélecteur derrière (ordre Z) mon arrière-plan UIImageView afin que seule une partie du sélecteur soit visible, ce qui est dicté par la fenêtre transparente dans mon arrière-plan.
Il n'y a que trois hauteurs valides pour UIPickerView (162.0, 180.0 and 216.0)
.
Vous pouvez utiliser les fonctions CGAffineTransformMakeTranslation
et CGAffineTransformMakeScale
pour adapter correctement le sélecteur à votre convenance.
Exemple:
CGAffineTransform t0 = CGAffineTransformMakeTranslation (0, pickerview.bounds.size.height/2);
CGAffineTransform s0 = CGAffineTransformMakeScale (1.0, 0.5);
CGAffineTransform t1 = CGAffineTransformMakeTranslation (0, -pickerview.bounds.size.height/2);
pickerview.transform = CGAffineTransformConcat (t0, CGAffineTransformConcat(s0, t1));
Le code ci-dessus modifie la hauteur de la vue du sélecteur à la moitié et la repositionne à la position exacte (Left-x1, Top-y1) .
Essayer:
pickerview.transform = CGAffineTransformMakeScale(.5, 0.5);
Dans iOS 4.2 et 4.3, les travaux suivants:
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.frame = CGRectMake(0, 0, 320, 180);
[self addSubview:datePicker];
Ce qui suit ne fonctionne pas:
UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 180)];
[self addSubview:datePicker];
J'ai une application qui est dans l'App Store avec un sélecteur de date à 3 lignes. Je pensais que le changement de hauteur avait peut-être été évité car vous voyez le texte sous la bordure du sélecteur de date, mais cela arrive également au sélecteur de date normal de 216 hauteurs.
Quel est le bug? Votre estimation est aussi bonne que la mienne.
Il existe également 3 hauteurs valides pour UIDatePicker
(et UIPickerView
) 162,0, 180,0 et 216,0. Si vous définissez une UIPickerView
hauteur sur autre chose, vous verrez ce qui suit dans la console lors du débogage sur un appareil iOS.
2011-09-14 10:06:56.180 DebugHarness[1717:707] -[UIPickerView setFrame:]: invalid height value 300.0 pinned to 216.0
À partir d'iOS 9, vous pouvez modifier librement UIPickerView
la largeur et la hauteur. Pas besoin d'utiliser les hacks de transformation mentionnés ci-dessus.
J'ai trouvé que vous pouvez modifier la taille de UIPickerView - mais pas avec le constructeur d'interface. ouvrez le fichier .xib avec un éditeur de texte et définissez la taille de la vue du sélecteur sur ce que vous voulez. Le constructeur d'interface ne réinitialise pas la taille et semble fonctionner. Je suis sûr qu'Apple a verrouillé la taille pour une raison, vous devrez donc expérimenter différentes tailles pour voir ce qui fonctionne.
UIPickerView
se comporte comme il se doitUIViewController
viewWillLayoutSubviews
pour redimensionner / positionner leUIPickerView
UIPopover
UIPickerView
pickerView viewForRow
pour annuler la transformation des sous-vuesSous-classe UIPickerView et remplacez les deux méthodes à l'aide du code suivant. Il combine le sous-classement, la hauteur fixe et l'approche de transformation.
#define FIXED_PICKER_HEIGHT 216.0f
- (void) setFrame:(CGRect)frame
{
CGFloat targetHeight = frame.size.height;
CGFloat scaleFactor = targetHeight / FIXED_PICKER_HEIGHT;
frame.size.height = FIXED_PICKER_HEIGHT;//fake normal conditions for super
self.transform = CGAffineTransformIdentity;//fake normal conditions for super
[super setFrame:frame];
frame.size.height = targetHeight;
CGFloat dX=self.bounds.size.width/2, dY=self.bounds.size.height/2;
self.transform = CGAffineTransformTranslate(CGAffineTransformScale(CGAffineTransformMakeTranslation(-dX, -dY), 1, scaleFactor), dX, dY);
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
//Your code goes here
CGFloat inverseScaleFactor = FIXED_PICKER_HEIGHT/self.frame.size.height;
CGAffineTransform scale = CGAffineTransformMakeScale(1, inverseScaleFactor);
view.transform = scale;
return view;
}
Un moyen simple de modifier la hauteur visible d'une vue de sélecteur consiste à incorporer le sélecteur dans un UIView, à ajuster la hauteur de la vue parente à la hauteur que vous voulez voir du sélecteur, puis à activer "Sous-vues de clip" dans Interface Builder sur l'UIView parent ou défini view.clipsToBounds = true
dans le code.
Clip Subviews
. aussi la taille du UIPickerView
doit être plus grand - et vous devez viser le centre de votre UIPickerView
pour être visible à l'intérieur du parentUIView
UIPickerView
partir du code).
Je n'ai pu suivre aucun des conseils ci-dessus.
J'ai regardé plusieurs tutoriels et j'ai trouvé celui- ci le plus bénéfique:
J'ai ajouté le code suivant pour définir la nouvelle hauteur dans la méthode "viewDidLoad", qui fonctionnait dans mon application.
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];
[self.view addSubview:picker];
picker.delegate = self;
picker.dataSource = self;
J'espère que cela a été utile!
Cela a beaucoup changé dans iOS 9 (dans iOS 8, c'est assez similaire à ce que nous voyons ici). Si vous pouvez vous permettre de cibler uniquement iOS 9, vous redimensionnez le UIPickerView
comme bon vous semble, en définissant son cadre. Bien!
Le voici à partir des notes de publication d' iOS 9
UIPickerView et UIDatePicker sont désormais redimensionnables et adaptatifs. Auparavant, ces vues imposaient une taille par défaut même si vous tentiez de les redimensionner. Ces vues ont également désormais par défaut une largeur de 320 points sur tous les appareils, au lieu de la largeur de l'appareil sur iPhone.
Les interfaces qui reposent sur l'ancienne application de la taille par défaut sembleront probablement incorrectes lorsqu'elles seront compilées pour iOS 9. Tous les problèmes rencontrés peuvent être résolus en contraignant ou en dimensionnant complètement les vues du sélecteur à la taille souhaitée au lieu de s'appuyer sur un comportement implicite.
Je travaille avec ios 7, Xcode 5. J'ai pu ajuster la hauteur du sélecteur de date indirectement en l'enfermant dans une vue. La hauteur des vues du conteneur peut être ajustée.
Créez une vue dans IB ou code. Ajoutez votre sélecteur en tant que sous-vue de cette vue. Redimensionnez la vue. C'est plus facile à faire dans IB. Créez des contraintes de la vue à sa vue de supervision et du sélecteur à cette nouvelle vue.
Étant donné que le sélecteur se courbe autour, il se répand en haut et en bas de la vue. Vous pouvez voir dans IB lorsque vous ajoutez des contraintes du haut et du bas du sélecteur à la vue, il affiche un espace standard quelque chose comme 16 points au-dessus et en dessous du conteneur superview. Réglez la vue pour la couper si vous ne voulez pas ce comportement (horrible avertissement).
Voici à quoi cela ressemble à 96 points de haut sur un iPhone 5. Le sélecteur avec le débordement mesure environ 130 points de haut. Assez maigre!
J'utilise ceci dans mon projet pour empêcher le sélecteur de s'étendre à une hauteur inutile. Cette technique le réduit et force un débordement plus serré. Il semble en fait plus lisse d'être un peu plus compact.
Voici une image de la vue montrant le débordement.
Voici les contraintes IB que j'ai ajoutées.
Même s'il n'est pas redimensionné, une autre astuce peut aider dans le cas où l'UIPicker est situé en bas de l'écran.
On peut essayer de le déplacer légèrement vers le bas, mais la rangée centrale doit rester visible. Cela aidera à révéler un peu d'espace au-dessus du sélecteur car les lignes du bas seront hors écran.
Je répète que ce n'est pas la manière de changer la hauteur de la vue UIPicker mais une idée de ce que vous pouvez faire si toutes les autres tentatives échouent.
Ok, après avoir longtemps lutté avec le stupide pickerview sous iOS 4, j'ai décidé de changer mon contrôle en simple tableau: voici le code:
ComboBoxView.m = which is actually looks more like pickerview.
//
// ComboBoxView.m
// iTrophy
//
// Created by Gal Blank on 8/18/10.
//
#import "ComboBoxView.h"
#import "AwardsStruct.h"
@implementation ComboBoxView
@synthesize displayedObjects;
#pragma mark -
#pragma mark Initialization
/*
- (id)initWithStyle:(UITableViewStyle)style {
// Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
if ((self = [super initWithStyle:style])) {
}
return self;
}
*/
#pragma mark -
#pragma mark View lifecycle
/*
- (void)viewDidLoad {
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
*/
/*
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
*/
/*
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
*/
/*
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}
*/
/*
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
return [[self displayedObjects] count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
//cell.contentView.frame = CGRectMake(0, 0, 230.0,16);
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 5, 230.0,19)] autorelease];
VivatAwardsStruct *vType = [displayedObjects objectAtIndex:indexPath.row];
NSString *section = [vType awardType];
label.tag = 1;
label.font = [UIFont systemFontOfSize:17.0];
label.text = section;
label.textAlignment = UITextAlignmentCenter;
label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
label.adjustsFontSizeToFitWidth=YES;
label.textColor = [UIColor blackColor];
//label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:label];
//UIImage *image = nil;
label.backgroundColor = [UIColor whiteColor];
//image = [awards awardImage];
//image = [image imageScaledToSize:CGSizeMake(32.0, 32.0)];
//[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
//UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//cell.accessoryView = imageView;
//[imageView release];
}
return cell;
}
/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/
/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
#pragma mark -
#pragma mark Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
*/
}
#pragma mark -
#pragma mark Memory management
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Relinquish ownership any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
// For example: self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
Voici le fichier .h pour cela:
//
// ComboBoxView.h
// iTrophy
//
// Created by Gal Blank on 8/18/10.
//
#import <UIKit/UIKit.h>
@interface ComboBoxView : UITableViewController {
NSMutableArray *displayedObjects;
}
@property (nonatomic, retain) NSMutableArray *displayedObjects;
@end
now, in the ViewController where I had Apple UIPickerView I replaced with my own ComboBox view and made it size what ever I wish.
ComboBoxView *mypickerholder = [[ComboBoxView alloc] init];
[mypickerholder.view setFrame:CGRectMake(50, 220, 230, 80)];
[mypickerholder setDisplayedObjects:awardTypesArray];
c'est tout, il ne reste plus qu'à créer une variable membre dans la vue combobox qui contiendra la sélection de ligne actuelle, et nous sommes prêts à partir.
Profitez de tout le monde.
Vous ne pouvez généralement pas le faire dans xib ou définir le cadre par programme, mais si vous ouvrez son xib parent en tant que source et changez la hauteur à partir de là, cela fonctionne.Cliquez droit sur le xib dans lequel la vue de sélection est contenue, recherchez la vue de la sélection et vous pouvez trouver la hauteur, la largeur, etc. dans cette balise, modifiez la hauteur puis enregistrez le fichier.
<pickerView contentMode="scaleToFill" id="pai-pm-hjZ">
<rect key="frame" x="0.0" y="41" width="320" height="100"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<connections>
<outlet property="dataSource" destination="-1" id="Mo2-zp-Sl4"/>
<outlet property="delegate" destination="-1" id="nfW-lU-tsU"/>
</connections>
</pickerView>
Autant que je sache, il est impossible de réduire le UIPickerView. Je n'ai pas non plus vu de version plus courte utilisée nulle part. Je suppose que c'était une implémentation personnalisée s'ils réussissaient à la réduire.
Si vous souhaitez créer votre sélecteur dans IB, vous pouvez le post-redimensionner à une taille plus petite. Assurez-vous cependant qu'il dessine toujours correctement, car il arrive un moment où cela semble odieux.
Swift : vous devez ajouter une sous-vue avec un clip aux limites
var DateView = UIView(frame: CGRectMake(0, 0, view.frame.width, 100))
DateView.layer.borderWidth=1
DateView.clipsToBounds = true
var myDatepicker = UIDatePicker(frame:CGRectMake(0,-20,view.frame.width,162));
DateView.addSubview(myDatepicker);
self.view.addSubview(DateView)
Cela devrait ajouter un sélecteur de date tronqué de 100 hauteurs en haut du contrôleur de vue.
Mon truc: utilisez le calque de masque de datepicker pour rendre visible une partie de datePicker. comme vous le voyez, changez le cadre du datepicke.
- (void)timeSelect:(UIButton *)timeButton {
UIDatePicker *timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 550)];
timePicker.backgroundColor = [UIColor whiteColor];
timePicker.layer.mask = [self maskLayerWithDatePicker:timePicker];
timePicker.layer.masksToBounds = YES;
timePicker.datePickerMode = UIDatePickerModeTime;
[self.view addSubview:timePicker];
}
- (CALayer *)maskLayerWithDatePicker:(UIDatePicker *)datePicker {
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, datePicker.width*0.8, datePicker.height*0.8) cornerRadius:10];
shapeLayer.path = path.CGPath;
return shapeLayer;
}
Incorporer dans une vue de pile. La vue Stack est un composant récemment ajouté par Apple dans son SDK iOS pour refléter les implémentations basées sur la grille dans les bibliothèques frontales basées sur le Web de script java telles que bootstrap.
Comme mentionné ci-dessus, il UIPickerView
est désormais redimensionnable. Je veux juste ajouter que si vous souhaitez modifier la hauteur du sélecteurView dans une cellule tableView, je n'ai pas réussi à définir l'ancre de hauteur sur une constante. Cependant, l'utilisation lessThanOrEqualToConstant
semble fonctionner.
class PickerViewCell: UITableViewCell {
let pickerView = UIPickerView()
func setup() {
// call this from however you initialize your cell
self.contentView.addSubview(self.pickerView)
self.pickerView.translatesAutoresizingMaskIntoConstraints = false
let constraints: [NSLayoutConstraint] = [
// pin the pickerView to the contentView's layoutMarginsGuide
self.pickerView.leadingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.leadingAnchor),
self.pickerView.topAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.topAnchor),
self.pickerView.trailingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.trailingAnchor),
self.pickerView.bottomAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.bottomAnchor),
// set the height using lessThanOrEqualToConstant
self.pickerView.heightAnchor.constraint(lessThanOrEqualToConstant: 100)
]
NSLayoutConstraint.activate(constraints)
}
}
Après une longue journée à me gratter la tête, j'ai trouvé quelque chose qui fonctionne pour moi. Les codes ci-dessous recréeront l'UIDatePicker chaque fois que l'utilisateur changera l'orientation du téléphone. Cela supprimera tous les problèmes que l'UIDatePicker a après un changement d'orientation.
Puisque nous recréons l'UIDatePicker, nous avons besoin d'une variable d'instance qui conservera la valeur de date sélectionnée. Les codes ci-dessous sont testés sur iOS 4.0.
@interface AdvanceDateViewController : UIViewController<UIPickerViewDelegate> {
UIDatePicker *datePicker;
NSDate *date;
}
@property (nonatomic, retain) UIDatePicker *datePicker;
@property (nonatomic, retain) NSDate *date;
-(void)resizeViewWithOrientation:(UIInterfaceOrientation) orientation;
@end
@implementation AdvanceDateViewController
@synthesize datePicker, date;
- (void)viewDidLoad {
[super viewDidLoad];
[self resizeViewWithOrientation:self.interfaceOrientation];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self resizeViewWithOrientation:self.interfaceOrientation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
[self resizeViewWithOrientation:toInterfaceOrientation];
}
-(void)resizeViewWithOrientation:(UIInterfaceOrientation) orientation{
[self.datePicker removeFromSuperview];
[self.datePicker removeTarget:self action:@selector(refreshPickupDate) forControlEvents:UIControlEventValueChanged];
self.datePicker = nil;
//(Re)initialize the datepicker, thanks to Apple's buggy UIDatePicker implementation
UIDatePicker *dummyDatePicker = [[UIDatePicker alloc] init];
self.datePicker = dummyDatePicker;
[dummyDatePicker release];
[self.datePicker setDate:self.date animated:YES];
[self.datePicker addTarget:self action:@selector(refreshPickupDate) forControlEvents:UIControlEventValueChanged];
if(UIInterfaceOrientationIsLandscape(orientation)){
self.datePicker.frame = CGRectMake(0, 118, 480, 162);
} else {
self.datePicker.frame = CGRectMake(0, 200, 320, 216);
}
[self.view addSubview:self.datePicker];
[self.view setNeedsDisplay];
}
@end
stockPicker = [[UIPickerView alloc] init];
stockPicker.frame = CGRectMake(70.0,155, 180,100);
Si vous souhaitez définir la taille de UiPickerView. Le code ci-dessus fonctionnera sûrement pour vous.
Dans iOS 5.0, les éléments suivants fonctionnent:
UIDatePicker *picker = [[UIDatePicker alloc] init];
picker.frame = CGRectMake(0.0, 0.0, 320.0, 160.0);
Cela a créé un sélecteur de date comme celui qu'Apple utilise dans l'application Calendrier lors de la création d'un nouvel événement en mode paysage. (3 lignes de haut au lieu de 5.) Cela n'a pas fonctionné lorsque j'ai défini le cadre dans la initWithFrame:
méthode, mais fonctionne jusqu'à présent lorsque vous le définissez en utilisant une méthode distincte.
pour iOS 5:
si vous jetez un coup d'œil au protocole UIPickerView Référence
tu trouveras
– pickerView:rowHeightForComponent:
– pickerView:widthForComponent:
Je pense que c'est le premier que vous recherchez
pickerView:rowHeightForComponent:
est la méthode déléguée pour décider de la hauteur de chaque ligne et non de la hauteur de la vue du sélecteur.