Domanda

E 'possibile modificare l'altezza di UIPickerView? Alcune applicazioni sembrano avere PickerViews più brevi, ma l'impostazione di un telaio più piccolo non sembra funzionare e il telaio è bloccato in Interface Builder.

È stato utile?

Soluzione

Sembra evidente che Apple non particolarmente invitare pasticciare con l'altezza di default della UIPickerView, ma ho trovato che si può ottenere un cambiamento nel Altezza della vista prendendo il controllo completo e passando una dimensione del frame desiderata al momento della creazione, ad esempio:

smallerPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];

Scoprirete che a varie altezze e larghezze, ci sono difetti visivi. Ovviamente, questi difetti avrebbero bisogno né di essere lavorato in giro in qualche modo, o scegliere un altro formato che non li presentano.

Altri suggerimenti

Nessuno dei precedenti approcci di lavoro in iOS 4.0

L'altezza della pickerView non è più ri-considerevole. C'è un messaggio che viene scaricato per consolare se si tenta di cambiare la cornice di un selettore a 4.0:

-[UIPickerView setFrame:]: invalid height value 66.0 pinned to 162.0 

ho finito per fare qualcosa di radicale per ottenere l'effetto di un selettore più piccolo, che funziona sia 3.xx OS e OS 4.0. Ho lasciato il selettore di essere qualsiasi dimensione l'SDK decide dovrebbe essere e invece fatto una finestra trasparente cut-attraverso la mia immagine di sfondo attraverso il quale il selettore diventa visibile. Poi semplicemente posto il selettore dietro (Z Ordine saggio) il mio background UIImageView in modo che solo una parte del selettore è visibile che è dettata dalla finestra trasparente nel mio background.

Ci sono solo tre altezze validi per UIPickerView (162.0, 180.0 and 216.0).

È possibile utilizzare le funzioni CGAffineTransformMakeTranslation e CGAffineTransformMakeScale per adattarsi correttamente il selettore per la vostra convenienza.

Esempio:

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));

La modifica del codice sopra l'altezza di vista selettore per metà e riposizionare al esatto (Sinistra-x1, Top-Y1) Posizione.

Prova:

pickerview.transform = CGAffineTransformMakeScale(.5, 0.5);

In iOS 4.2 e 4.3 le seguenti opere:

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.frame = CGRectMake(0, 0, 320, 180);
[self addSubview:datePicker];

La seguente non funziona:

UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 180)];
[self addSubview:datePicker];

Ho un app che è in App Store con una data linea di 3 raccoglitrice. Ho pensato che il cambiamento di altezza potrebbe essere stato evitato perché si vede il testo sotto bordo la data del selettore, ma questo accade al normale 216 altezza selezione data troppo.

Qual è il bug? La vostra congettura è buona quanto la mia.

Inoltre ci sono 3 altezze validi per UIDatePicker (e UIPickerView) 162,0, 180,0 e 216,0. Se si imposta un'altezza UIPickerView a qualsiasi altra cosa si vedrà il seguente nella console durante il debug su un dispositivo iOS.

2011-09-14 10:06:56.180 DebugHarness[1717:707] -[UIPickerView setFrame:]: invalid height value 300.0 pinned to 216.0

Come di iOS 9, è possibile modificare liberamente larghezza e l'altezza di UIPickerView. Non c'è bisogno di utilizzare la suddetta trasformare hack.

Ho trovato ciò che possono modificare la dimensione del UIPickerView - non solo con la creazione di interfacce. aprire il file .xib con un editor di testo e impostare la dimensione della vista selettore per quello che vuoi. interface builder non azzera la dimensione e sembra funzionare. Sono sicuro mela bloccato la dimensione per un motivo così dovrete sperimentare con dimensioni diverse per vedere che cosa funziona.

Vantaggi:

  1. Rende SETFRAME di UIPickerView si comporta come dovrebbe
  2. Non trasformare il codice all'interno del vostro UIViewController
  3. Opere entro viewWillLayoutSubviews a ridimensionare / posizione UIPickerView
  4. Opere su iPad senza UIPopover
  5. La superclasse riceve sempre un'altezza valida
  6. Compatibile con iOS 5

Svantaggi:

  1. Richiede l'sottoclasse UIPickerView
  2. richiede l'uso di pickerView viewForRow per annullare la trasformazione dei subviews
  3. UIAnimations potrebbero non funzionare

Soluzione:

sottoclasse UIPickerView e sovrascrivere i due metodi utilizzando il codice seguente. Esso combina sottoclassi, altezza fissa e il metodo di trasformazione.

#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 modo semplice per modificare l'altezza visibile di una vista selettore è quello di incorporare il selettore in un'UIView, regolare l'altezza della vista padre per l'altezza che si desidera vedere del selettore, quindi attivare "CLIP subviews" in Interface Builder su l'UIView genitore o impostare view.clipsToBounds = true nel codice.

subviews clip in IB

Non ero in grado di seguire uno dei consigli di cui sopra.

Ho guardato più tutorial e ho trovato questo uno il più vantaggioso:

Ho aggiunto il seguente codice per impostare la nuova altezza all'interno del metodo "viewDidLoad", che ha lavorato nella mia app.

UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)]; 
[self.view addSubview:picker];
picker.delegate = self;
picker.dataSource = self;

Spero che questo è stato utile!

Questa è cambiato molto in iOS 9 (in iOS 8 è abbastanza simile a quello che stiamo vedendo qui). Se si può permettere di indirizzare iOS 9 solo, allora si ridimensiona la UIPickerView come meglio credi, impostando la sua cornice. Buona!

Qui è da iOS 9 Note sulla versione

  

UIPickerView e UIDatePicker sono ora ridimensionabili e   adattativo-in precedenza, questi punti di vista sarebbe imporre una dimensione predefinita, anche se   si è tentato di ridimensionare loro. Questi punti di vista anche ora di default ad una larghezza   di 320 punti su tutti i dispositivi, anziché alla larghezza dispositivo   iPhone.

     

Interfacce che si basano sulla vecchia applicazione della dimensione predefinita sarà   probabilmente guardare sbagliato quando compilato per iOS 9. eventuali problemi incontrati   può essere risolto da una vista completamente vincolanti o ridimensionamento selettore per la   dimensioni desiderate invece di basarsi sul comportamento implicito.

Sto lavorando con iOS 7, Xcode 5. Sono stato in grado di regolare l'altezza della selezione data indirettamente racchiudendolo in una vista. L'altezza del contenitore di vista può essere regolata.

Anche pensano che non è il ridimensionamento, un altro trucco può aiutare nella situazione in cui l'UIPicker si trova nella parte inferiore dello schermo.

Si può provare a spostarlo leggermente verso il basso, ma la fila centrale deve rimanere visibile. Ciò contribuirà a rivelare un po 'di spazio al di sopra del selettore dal righe inferiori saranno Offscreen.

Ripeto che questo non è il modo di cambiare l'altezza di vista UIPicker ma qualche idea su cosa si può fare se tutti gli altri tentativi falliscono.

Ok, dopo aver lottato a lungo con il pickerView stupido in iOS 4, ho deciso di cambiare il mio controllo nella tabella semplice: ecco il codice:

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

Questo è il file .h per questo:

//
//  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];

il gioco è fatto, ora l'unica cosa che rimane è di creare una variabile membro nella vista casella combinata che conterrà la selezione riga corrente, e siamo a posto.

Godetevi tutti.

Non si può in genere farlo nel telaio XI ter o l'impostazione modo pianificato, ma se si apre la sua XI ter genitore come fonte di cambiamento e l'altezza da lì allora works.Right clic sulla XI ter entro il quale è contenuta pickerView, Ricerca pickerView e si possono trovare in altezza , larghezza ecc in quel tag, in altezza modifica c'è quindi salvare il file.

<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>

Creare una vista in IB o codice. Aggiungi il tuo raccoglitrice come una visualizzazione secondaria di questa visione. Ridimensionare la vista. Questo è più facile da fare in IB. Creare vincoli dal punto di vista della sua superview e dal selettore a questa nuova visione.

Poiché le curve Selettore intorno riversa sopra la parte superiore e inferiore della vista. Si può vedere in IB quando si aggiungono i vincoli superiore e inferiore dal selettore alla vista che mostra uno spazio qualcosa di standard come 16 punti sopra e sotto il contenitore superview. Impostare la visualizzazione di clip, se non si desidera che questo comportamento (brutto avvertimento).

Ecco come si presenta a 96 punti alti su un iPhone 5. Il selettore con la ricaduta è alto circa 130 punti. Piuttosto magro!

Sto usando questo nel mio progetto per evitare che il selettore di diffondersi ad un'altezza non necessaria. Questa tecnica trim verso il basso e costringe una fuoriuscita stretto sopra. Sembra in realtà lisciante per essere un po 'più compatta.

entrare descrizione dell'immagine qui

Ecco un'immagine della vista che mostra le ripercussioni.

entrare descrizione dell'immagine qui

Ecco i vincoli IB ho aggiunto.

entrare descrizione dell'immagine qui

Per quanto ne so, è impossibile ridurre l'UIPickerView. Anche io non ho effettivamente visto uno più corto utilizzato ovunque. La mia ipotesi è che si trattava di un'implementazione personalizzata se sono riusciti a ridurla.

Vedere la mia risposta a questa domanda: UIPicker dimensionamento in modalità orizzontale

Se si desidera creare il selettore in IB, è possibile inviare-ridimensionarla a una dimensione inferiore. Controllare per assicurarsi che attira ancora correttamente, però, come si arriva a un punto in cui sembra atroce.

Swift : È necessario aggiungere una visualizzazione secondaria con clip per limiti

    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)

Questo dovrebbe aggiungere un ritagliato 100 altezza selezione data nella parte superiore del controller della vista.

Il mio trucco: usare livello maschera di datepicker per fare datepicker qualche parte visibile. come si vede proprio come cambiare il telaio del 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;
}

Io uso un livello maschera per cambiare la sua dimensione di visualizzazione

// swift 3.x
let layer = CALayer()
layer.frame = CGRect(x: 0,y:0, width: displayWidth, height: displayHeight)
layer.backgroundColor = UIColor.red.cgColor
pickerView.layer.mask = layer

Incorpora in una vista stack. vista Stack è un componente aggiunto di recente da Apple nel loro iOS SDK per riflettere implementazioni basate griglia in java script basato sul web le librerie di front-end, come bootstrap.

Come accennato in precedenza UIPickerView è ora ridimensionabile. Voglio solo aggiungere però che se si vuole cambiare l'altezza della pickerView in a Cell tableView, non ho avuto alcun successo con l'impostazione del ancoraggio altezza per una costante. Tuttavia, utilizzando lessThanOrEqualToConstant sembra funzionare.

 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)
     }

 }

Dopo una lunga giornata di graffiare la mia testa, ho trovato qualcosa che funziona per me. I codici di seguito riportati ricreare l'UIDatePicker ogni volta che l'utente cambia l'orientamento del telefono. Questo eliminerà qualsiasi difetti che l'hanno UIDatePicker dopo un cambiamento di orientamento.

Dato che stiamo ricreando l'UIDatePicker, abbiamo bisogno di una variabile di istanza che manterrà il valore di data selezionato. I codici di seguito sono testati su 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);

Se si desidera impostare la dimensione del UIPickerView. Sopra il codice è un lavoro sicuramente andando per u.

In iOS 5.0, ho ottenuto il seguente al lavoro:

UIDatePicker *picker = [[UIDatePicker alloc] init];
picker.frame = CGRectMake(0.0, 0.0, 320.0, 160.0);

Questo ha creato un selettore di data come quella Apple utilizza in app calendario durante la creazione di un nuovo evento in modalità orizzontale. (3 righe elevati anziché 5.) Questo non ha funzionato quando si imposta il telaio all'interno del metodo initWithFrame:, ma finora funziona quando si imposta utilizzando un metodo separato.

per iOS 5:

Se si dà un'occhiata veloce al UIPickerView protocollo di riferimento

troverete

– pickerView:rowHeightForComponent:
– pickerView:widthForComponent:

Credo che sia il primo che stai cercando

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top