2009-08-06 18 views
1

Ich möchte eine Ansicht über einer anderen Ansicht in meiner iPhone App animieren. Ich möchte grundsätzlich meine Ansicht wie die Apple-Tastatur außer mit meinen benutzerdefinierten Steuerelementen aussehen. Wenn ich auf eine Schaltfläche klicke, möchte ich, dass die neue Ansicht unten auf dem Bildschirm über einem Teil der Ansicht animiert wird.Animieren einer Ansicht über einer anderen Ansicht

Wie würde ich das tun?

Antwort

5

Fügen Sie die Ansicht einfach irgendwo außerhalb des sichtbaren Rahmens der Superansicht hinzu (die Ansicht, die Sie oben animieren), und ändern Sie dann ihre Position mithilfe eines Animationsblocks. Es wird nach oben gleiten.

- (void)addView 
{ 
    // Obviously this won't compile with cut&paste... you have 
    // to supply the actual views. 
    UIView* myControlView = // assume this exists somewhere 
    UIView* myMainView = // assume this exists too 
    myControlView.frame = CGRectMake(0, 480, 320, 100); // use real numbers 
    [myMainView addSubview:myControlView]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    myControlView.frame = CGRectMake(0, 380, 320, 100); 
    [UIView commitAnimations]; 
} 

Es gibt eine Reihe anderer Möglichkeiten, dies auch zu tun. Sie können beispielsweise festlegen, dass eine Ansicht genau dort liegt, wo Sie sie haben möchten, und sie dann vom Bildschirm aus übersetzen, um sie zu "verstecken". Wenn Sie möchten, dass es zurückkommt, transformieren Sie es erneut mit einer affinen Transformation innerhalb eines Animationsblocks und es wird wieder nach oben gleiten. Das funktioniert ein wenig besser mit Ansichten, die vordefiniert sind, wie der Verwendung von Interface Builder und solchen, bei denen Sie nicht unbedingt wissen, wie die Positionen des Rahmens sind, oder sie können sich in anderem Code ändern.

+0

ist da sowieso ich könnte dies mit Tabellenansichten arbeiten? Wenn ich zum Beispiel auf eine Zeile klicke, erscheint am unteren Bildschirmrand ein Steuerelement. Die Verwendung des obigen Codes für ein Kind von UIScrollView funktioniert nicht optimal. – zpesk

+1

Sie müssen der Ansicht, die die Bildlaufansicht enthält, etwas hinzufügen, nicht die Bildlaufansicht selbst. Realistisch gesehen sind die Bildlaufansicht und dieses Steuerelement Geschwister, wobei dieses Steuerelement bei der Verwendung am wichtigsten ist. –

+0

wie würdest du es zur vordersten ansicht machen ??? – zpesk

Verwandte Themen