2010-11-26 14 views
0

Ich bemerkte etwas, das vorher noch nie ein Problem war. Ich habe ein Projekt für iPad, wo ich mehrere UIPickerView horizontal nebeneinander positioniert. Hier respektieren sie den CGRect Rahmen, mit dem ich sie initialisiere, was bedeutet, dass das Platzieren anderer Elemente auf beiden Seiten kein Problem darstellt.UIPickerView belegt den gesamten horizontalen Platz auf dem iPhone, aber nicht auf dem iPad?

Jetzt versuche ich dies auf einem iPhone-Projekt zu tun und hier ein UIPickerView besteht darauf, das einzige Element zu sein. Es ist so dimensioniert, dass es den Bildschirm horizontal ausfüllt, mit den "um" -Grafiken.

Ich versuchte verschiedene Ansätze, legen Sie die UIPickerView in eine andere Ansicht dann Dimensionierung dieser Super-Ansicht, die nur zum Clipping führt, nicht die Größe ändern. Eine andere Sache ist, dass die UIPicker darauf besteht, in der Mitte des Bildschirms platziert werden. Dies bedeutet im Wesentlichen, dass, wenn ein UIPickerView zu dem Bildschirm hinzugefügt wird, obwohl seine einzelne Komponente nur 70 px breit ist, diese 320 px des Bildschirms aufgebraucht sind.

Was ich versuche zu erreichen, ist eine UIPicker auf der rechten Seite des Bildschirms und eine Taste auf der linken Seite.

Ich übersehe hier etwas Offensichtliches? Hoffe jemand eine Hand, danke im voraus verleihen könnte :)

Nichts komplizierter als dies:

UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 165.0f)]; 

UIPickerView *picker = [[UIPickerView alloc] initWithFrame:container.frame]; 
[picker setDelegate:self]; 
[picker setDataSource:self]; 
[container addSubview:picker]; 

der Rahmen I gesetzt ist, wird nicht eingehalten. Es beansprucht den gesamten horizontalen Raum.

Antwort

1

Ich habe Ihren Code mit dem gleichen Ergebnis versucht.

Sie können jedoch den Rahmen festlegen, nachdem der Picker erstellt und Ihrem Container hinzugefügt wurde, und die neue Größe wird berücksichtigt. Hier ist mein Testfall, was für mich funktioniert SDK 4.2, in dem iPhone-Simulator:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIPickerView* pv = [[[UIPickerView alloc] initWithFrame: CGRectMake(160, 100, 100, 216) ] autorelease]; 
    pv.delegate = self; 
    pv.dataSource = self; 
    [self.view addSubview: pv]; 

    pv.frame = CGRectMake(10, 10, 100, 216); 
} 
+0

Hallo Tom, du hast recht, ich bekomme das gleiche Ergebnis, indem zuerst die UIPicker Zugabe (UIPickerView * Picker = [[UIPickerView alloc ] initWithFrame: CGRectZero];) ohne Rahmen und dann Setzen des Rahmens, nachdem die Auswahl einer Ansicht hinzugefügt wurde. Vielen Dank:) – RickiG

Verwandte Themen