4 Stimmen

Wie repliziert man die Scale-Up-Animation, wenn eine App regelmäßig startet (App-Symbol auf HomeScreen drücken) auf einem iPhone?

Ich möchte die Animation nachbilden, wenn eine Anwendung auf dem iPhone startet. Es gibt die erste Ansicht Skalierung von 50 % bis 100 % ich denke. Später möchte ich dies als Übergang zwischen 2 Ansichten verwenden. Irgendwelche Ideen, wie man replizieren, oder gibt es eine fertige Lösung von Apple in der sdk verwenden? Vielen Dank schon mal :)

10voto

Sie können die gleiche Sache mit CABasicAnimation und CAAnimationGroup tun, ich dachte eigentlich, dass Core Animation über UIKit Animationen war glatter und es gibt Ihnen mehr Kontrolle.

CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
animationGroup.removedOnCompletion = YES;

CABasicAnimation *fadeAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnimation.fromValue = [NSNumber numberWithFloat:0.0];
fadeAnimation.toValue = [NSNumber numberWithFloat:1.0];

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.fromValue = [NSNumber numberWithFloat:0.5];
scaleAnimation.toValue = [NSNumber numberWithFloat:1.00];

animationGroup.animations = [NSArray arrayWithObjects:fadeAnimation, scaleAnimation, nil];

[self.layer addAnimation:animationGroup forKey:@"fadeAnimation"];
self.layer.opacity = 1.0;

"Es gibt immer mehr als eine Art, eine Katze zu häuten"

6voto

Matt Long Punkte 24275

Sie können eine Skalierungstransformation auf die UIView anwenden und sie dann in ihren normalen Zustand zurückversetzen.

// Set the the view's scale to half
[viewToScale setTransform:CGAffineTransformMakeScale(0.5,0.5)];

// Set the transform back to normal (identity) in an animation when you're
// ready to animate
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[viewToScale setTransform:CGAffineTransformIdentity];
[UIView commitAnimations];

Der Trick dabei ist, dass Sie die Ansicht in einem von der Animation getrennten Laufzyklus auf den kleineren Maßstab einstellen müssen, sonst wird die Ansicht nicht animiert. Sie können also den kleineren Maßstab einstellen und dann -performSelector:withObject:afterDelay: um die Animation tatsächlich durchzuführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X