Wie animiert man die Breite und Höhe einer UIView in Xcode?
Habe ich diese Untersicht möchte ich hinzufügen, dass zu meiner Haupt-anzeigen, machen Sie aber erweitern, die von der Herkunft. Ich Lesen Sie einige der Apple-Dokumentation, aber ich verstehe nicht wo mache ich Fehler. Ich kann animieren, den Ursprung des Rahmens, D. H., um es in Folie von wo auch immer, aber die Breite/Höhe nicht scheinen zu animieren. Code wie folgt:
[UIView beginAnimations:@"animateAddContentView" context:nil];
[UIView setAnimationDuration:0.4];
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 0, 150);
[self.view addSubview:customView];
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 310, 150);
[UIView commitAnimations];
Habe ich auch versucht, indem nur der setFrame Teil in der animation wie diese:
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 0, 150);
[self.view addSubview:customView];
[UIView beginAnimations:@"animateAddContentView" context:nil];
[UIView setAnimationDuration:0.4];
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 310, 150);
[UIView commitAnimations];
Aber es funktioniert immer noch nicht!
EDIT:
Als pro die Anregungen, ich habe es verschoben, um eine block-basierte Animations-Lösung, und dies ist der exakte code:
NSLog(@"yourview : %@",customView);
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 0, 150);
NSLog(@"yourview : %@",customView);
[self.view addSubview:customView];
NSLog(@"yourview : %@",customView);
// [customView setFrame:CGRectMake( 0.0f, 480.0f, customView.frame.size.width, customView.frame.size.height)];
[UIView animateWithDuration:0.4
delay:0
options:UIViewAnimationCurveEaseInOut
animations:^ {
NSLog(@"yourview : %@",customView);
customView.frame = CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 310, 150);
NSLog(@"yourview : %@",customView);
}completion:^(BOOL finished) {
}];
Welches immer noch nicht funktioniert, für einige reason. Mögliche Probleme die ich sehe sind:
- Ich bin laden das customView von einem
nib
ist speziell 310 von 150, vielleicht, dass ein problem verursacht. - Ich bin nicht importieren die richtigen Rahmenbedingungen, aber da kann ich animieren, den Rahmen.Herkunft teilen diese Ansicht, ich bin nicht sicher, ob das der Fall ist...ich habe
QuartzCore
undCore Graphics
alle importierten und Zeug.
An jedem Punkt im log ist es die richtigen Sachen: zum Beispiel, bevor die Ziel-frame-Größe ist 0, 150, und nachdem ich den Rahmen seiner 310, 150. Aber die animation funktioniert nicht!
InformationsquelleAutor der Frage Hudson Buddy | 2012-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um eine Ansicht zu "wachsen" in den Platz, animieren Sie nicht die Rahmen. Animieren Sie die Transformation.
Laden Sie Ihre Untersicht aus der Feder. Seine Transformation auf eine Skala von 0:
Dann fügen Sie es Ihrer superview.
Innerhalb der animation block, legen Sie die Transformation der Identität:
Sich die Ansicht wachsen zu normaler Größe. Möglicherweise muss man mit der Ankerpunkt, damit es wachsen aus der richtigen Stelle.
Können Sie auch ändern Sie den Rahmen auf den block, sondern um eine Ansicht verschieben, nur ich bevorzugen, ändern Sie die center-Eigenschaft, die Sie sollten nicht versuchen, den Rahmen, wenn Sie auch transformieren.
Für bonus-Punkte, können Sie auch animieren, ein wenig größer als 1.0 skalieren, animieren Sie dann zurück auf die Einheitsmatrix in einer verketteten animation von den Abschluss-block. Das macht die Sicht auf "pop" aus dem Bildschirm wie eine Warnung anzeigen.
InformationsquelleAutor der Antwort jrturton
Versuchen Sie es mit einem block es wird mehr sein, klar.
InformationsquelleAutor der Antwort Alec
Versuchen Sie dies:
Oder wenn Sie verwenden möchten beginAnimation-Methode anstelle von block Methos , Verwenden Sie diese :
InformationsquelleAutor der Antwort Ankit
Wichtige Punkte
1) Fügen Sie anzeigen, um Ihre parentView vor der animation, mit der Start-frame.
2.) Dann einfach geben, Ziel-Frames innerhalb der animation block
Benötigen Sie nicht mehr, seit Sie hinzufügen view aus der nib..
geben nur die animation code auf Ihre anzeigen.. Stellen Sie sicher, yourView ist nicht nil ist (mir Scheint das der Fall ist..)
InformationsquelleAutor der Antwort Krishnabhadra
Hier ist eine unterhaltsame Art und Weise zu animieren, Ihre Ansichten. In meinem Beispiel habe ich eine touch-Aktion, die ausgeführt wird, die block-Animationen und ein BOOLESCHER Wert, um sicherzustellen, dass das reset der Blick zurück auf Ihre ursprünglichen Staaten.
Zuerst setzten Sie 2 UIViews auf einem UIViewController (Sie können Farbe in verschiedenen Farben für den Kontrast). Verbinden Sie Ihr "MainViewController.h" - Datei, die Sie zur Steuerung der großen Ansicht.
Die .h-Datei sollte wie folgt Aussehen:
und Ihre .m-Datei sollte wie folgt Aussehen:
Also nur sicherstellen, dass die topView hat einige kleine Abmessungen wie x:0,y:0 Breite:320 Höhe:43 und bottomView wie x:0 y:40 Breite:320 Höhe:528. Denken Sie daran, um die Farbe der Hintergründe in verschiedenen Farben. Dann führen Sie einfach das Programm und Sie sollten finden Sie unter Animationen.
Für mich, ich denke, eine der wichtigeren Zeilen des Codes ist setFrame:dass mir ermöglicht, den Rahmen, um automatisch erneut das Rechteck ohne die DrawRect-Methode. Die-Eigenschaft festlegen, ändert sich der Punkt, angegeben durch die center-Eigenschaft und die Größe in der bounds-Rechteck entsprechend.
Natürlich gibt es andere tolle Möglichkeiten, dies zu tun, aber ich hoffe, das kann jemandem helfen, machen iOS zauberhaft Aussehen, wie es sein soll! Glückliche Reisen!
InformationsquelleAutor der Antwort tony.stack
Wenn Ihr viewcontrollers viewWillLayoutSubviews (oder so) setzt die "erste" frame yourView, dann, dass scheinbar die aufgerufen wird, während die animation Zyklus, und daher würde zurücksetzen der frame-set ist durch die animation.
InformationsquelleAutor der Antwort mtkopone
Swift 4
InformationsquelleAutor der Antwort Alfi