2009-07-13 9 views
2

Ich möchte eine Ansicht implementieren (es wird tatsächlich in die Fußzeile eines UITableView gehen), die 1-3 Tasten implementiert. Ich möchte, dass sich das Layout dieser Schaltflächen (und die Größe der Schaltflächen selbst) ändert, je nachdem, welche angezeigt werden. Ein Beispiel für fast genau das Verhalten, das ich möchte, befindet sich am unteren Rand des Info-Bildschirms in der Kontaktanwendung, wenn Sie einen bestimmten Kontakt betrachten ("Zu Favoriten hinzufügen" verschwindet, wenn Sie darauf klicken, und die anderen Schaltflächen werden erweitert) der verfügbare Platz in einer netten Animation).Dynamisches Tastenlayout ohne feste Codierpositionen

Während ich durch die verschiedenen Layout-Szenarien laufe, bin ich hart codieren all diese Werte und ich denke nur ... "das ist NICHT die Art, wie ich das tun soll."

Es scheint sogar, dass Interface Builder einige Funktionen, die dies für mich in der Registerkarte Lineal tun kann, aber ich werde verdammt sein, wenn ich herausfinden kann, wie sie funktionieren (wenn sie funktionieren) auf dem Telefon.

Hat jemand irgendwelche Vorschläge oder ein Tutorial online, das ich mir ansehen könnte, um mir in die richtige Richtung zu zeigen?

Vielen Dank.

Antwort

0

Sie konnten einen Blick auf Stanford cs193p classes

nehme ich denke, es gibt eine Demo in eine der Lektionen/Beispiel ist, wo sie die Autoresize der Tasten und einem anderen Set programaticaly, wo sie die Ansicht animieren. Sie können auch festlegen, dass die Ansicht dynamisch die Breite jeder Unteransicht auf (ownWidth/numberofSubView) setzt, das Gleiche für die Position der einzelnen Elemente.

[Bearbeiten] so? es ist nicht „dynamisch“ noch nicht, aber Sie haben die Idee Sie/Abnahme NumberOfButtons erhöhen kann, wenn „Hinzufügen/Entfernen“ eine Reset-Taste dann den neuen Rahmen aller Subviews

- (void)loadView 
{ 

UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
view.backgroundColor = [UIColor lightGrayColor]; 
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

int numberOfbuttons = 2; 
CGFloat buttonsLegth = (-20+view.bounds.size.width)/numberOfbuttons-20; 
for(int i=0;i<numberOfbuttons;i++){ 
    CGRect buttonFrame = CGRectMake(0, 0, buttonsLegth, 37); 
    buttonFrame.origin.x = (buttonFrame.size.width+20)*i + 20.0; 
    buttonFrame.origin.y = 20.0; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // Autoreleased 
    button.frame = buttonFrame; 
    [button setTitle:@"Done" forState:UIControlStateNormal]; 
    [view addSubview:button]; 
    } 
self.view = view; 
[view release]; 
} 
+0

Evan erwähnt die Autorisierungsmaskeneinstellungen für UIView in Lektion 6 Es ist nicht genau das, wonach ich suche. Meine Ansicht ändert niemals Größe oder Form. Das Layout der Schaltflächen in der Ansicht ändert sich je nachdem, welche Schaltflächen in der Ansicht sind. – mmc

+0

Haben Sie jemals eine Antwort bekommen, die Ihnen gefallen hat? Ich stehe vor dem gleichen Dilemma und muss glauben, dass es einen einfacheren Weg gibt, Größenberechnungen usw. zur Laufzeit. – user282172

0

hallo entfernen Sie alle Tasten in Ansicht und fügen Sie wieder mit dieser Methode ... Sie haben Anzahl der Tasten passieren und eine UIView, in dem Sie diese Tasten

-(void)addButtons:(int)numberOfButtons ToView:(UIView *)containerView; 
{ 
    CGRect containerRect = containerView.frame; 

    CGFloat padding = 5.0; 
    CGFloat width = (containerRect.size.width - (padding*numberOfButtons+1))/numberOfButtons; 
    for (int i = 1; i<=numberOfButtons; i++) 
    { 
     UIButton * btn = [[[UIButton alloc] initWithFrame:CGRectMake(i*padding+width, 0, width, containerRect.size.height)]autorelease]; 

     //set Button Properties like Target,backColor,Title,,,,etc MUST SET TAG TO ACCESS THEM IN CLICK METHOD IF YOU ARE USING SAME SELECTOR FOR ALL BUTTONS. 

     [containerView addSubview:btn]; 
    } 

} 

Versuchen Sie, diese hinzufügen möchten und Spaß haben ......

Verwandte Themen