Ich habe Haupt-UIView, in dem ich verschiedene Daten anzeige. Dann habe ich eine Schaltfläche eingefügt, die die folgende Unteransicht anzeigt:
- (IBAction) buttonClicked:(id)sender
{
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];
UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(25,25,50,25)];
newLabel.text = @"some text";
[newView addSubview:newLabel];
[self.view addSubview:newView];
[newLabel release];
[newView release];
}
newView sieht gut aus, animiert sich aber nicht, sondern erscheint sofort. Wie kann ich eine Art Animation hinzufügen, wenn newView angezeigt wird? Wie zoomen oder nach unten schieben oder so ähnlich. Gibt es einen einfachen Code?
Hallo ihr könntet die UIView Animationen benutzen:
[newView setFrame:CGRectMake( 0.0f, 480.0f, 320.0f, 480.0f)]; //notice this is OFF screen!
[UIView beginAnimations:@"animateTableView" context:nil];
[UIView setAnimationDuration:0.4];
[newView setFrame:CGRectMake( 0.0f, 0.0f, 320.0f, 480.0f)]; //notice this is ON screen!
[UIView commitAnimations];
Das SDK wird dies nun für Sie herausfinden und den Blick auf die Positionen animieren, die Sie ihm gegeben haben. Dies funktioniert für die meisten Eigenschaften von UIViews: Alpha, Skalierung, Grenzen, Frames usw.
Es gibt auch eingebaute Animationen als Flip und Curl:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:newView
cache:YES];
[self.navigationController.view addSubview:settingsView.view];
[UIView commitAnimations];
Hoffe das hilft dir beim Einstieg :)
[UIView transitionWithView:containerView duration:0.5
options:UIViewAnimationOptionTransitionCurlUp //change to whatever animation you like
animations:^ { [containerView addSubview:subview]; }
completion:nil];
link gegen QuarzCore Framework
#import <QuartzCore/QuartzCore.h>
CATransition *transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionPush; //choose your animation
[newView.layer addAnimation:transition forKey:nil];
[self.view addSubview:newView];
Machen wir das in Swift.
var redView = UIView(frame:CGRectMake(20,20,100,100))
redView.backgroundColor = UIColor.redColor
redView.alpha = 0.0
view.addSubview(redView)
UIView.animateWithDuration(0.25) { () -> Void in
redView.alpha = 1.0
}
Das Hinzufügen einer Unteransicht kann nicht durch einfaches Einfügen in einen animateWithDuration-Block animiert werden. Sie kann auch nicht mit hidden animiert werden.
Ich stellte fest, dass der Versuch, addSubview
alleine zu animieren, selbst mit den Animationsblöcken und -optionen nichts für mich tun würde. Ich habe eine Problemumgehung gefunden, die darin besteht, das Alpha der Unteransicht auf 0.0 zu setzen, die Unteransicht hinzuzufügen und dann die Einstellung des Alphas von 0.0 auf 1.0 zu animieren. Dies gibt mir den gewünschten Einblendeffekt.
Hoffe das hilft jemand anderem.
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
redView.backgroundColor = [UIColor redColor];
redView.alpha = 0.0;
[self.view addSubview:redView];
[UIView animateWithDuration:0.5 animations:^{
redView.alpha = 1.0;
}];