views:

2234

answers:

1

I have main UIView where I display different data. Then I put a button, which displays subview like this:

- (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 appears fine, but it doesn't animate itself any way, it just appears immediately. How can I add some kind of animation when newView appears? Like zoom or slide down or something like that. Is there some simple code?

+6  A: 

Hi You could use the 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];

The SDK will now figure this out for you and animate the view to the positions you gave it. This works for most properties of UIViews: alpha, scale, bounds, frames, etc.

There are also build in animations as flip and 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];

Hope this helps out getting you started:)

RickiG
cool, thanks, that worked just fine
Mike