61 votes

addSubview animation

J'ai principaux UIView où je l'affichage des données différentes. Puis-je mettre un bouton qui affiche les sous-vue comme ceci:

- (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 s'affiche bien, mais il n'a pas d'animer lui-même de toute façon, il apparaît immédiatement. Comment puis-je ajouter un certain genre de l'animation à l'newView apparaît? Comme le zoom ou le glisser vers le bas ou quelque chose comme ça. Est-il un simple code?

83voto

adedoy Points 1387

c'est un usage recommandé:

[UIView transitionWithView:containerView duration:0.5
        options:UIViewAnimationOptionTransitionCurlUp //change to whatever animation you like
        animations:^ { [containerView addSubview:subview]; }
        completion:nil];

80voto

RickiG Points 6348

Bonjour, Vous pouvez utiliser les UIView Animations:

[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];

Le SDK maintenant à la figure pour vous et animer le point de vue de la position que vous lui avez donné. Cela fonctionne pour la plupart des propriétés de UIViews: alpha, échelle, des limites, des cadres, etc.

Il y a aussi construire en animations flip et 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];

Espérons que cela aide que vous avez commencé:)

24voto

Chakalaka Points 1904

lien contre QuarzCore cadre

#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]; 

22voto

Kyle Clegg Points 8441

J'ai trouvé que même avec l'animation des blocs et des options, en essayant d'animer addSubview seul ne peut rien faire pour moi. J'ai trouvé une solution de contournement qui consiste à définir la sous-vue de l'alpha à 0,0, ajouter la sous-vue, et puis d'animer le réglage de l'alpha de 0.0 à 1.0. Cela me donne le fondu en effet que je cherchais.

Espérons que cela aide quelqu'un d'autre.

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;
}];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X