addSubviewanimation

我有主UIView我显示不同的数据。 然后我把一个button,它显示子视图像这样:

- (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显示正常,但它不会以任何方式进行animation,它只是立即出现。 如何在newView出现时添加某种animation? 像缩放或向下滑动或类似的东西。 有一些简单的代码?

嗨您可以使用UIViewanimation:

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

现在,SDK将为您解决这个问题,并为您提供的视图制作animation。 这适用于UIViews的大部分属性:alpha,scale,bounds,frames等

还有animation翻转和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]; 

希望这有助于让你开始:)

这一个是build议用法:

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

链接到QuarzCore框架

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

我发现即使使用animation块和选项,单独尝试animationaddSubviewaddSubview 。 我发现一个解决方法是将子视图的alpha设置为0.0,添加子视图,然后将alpha的设置从0.0设置为1.0。 这给了我正在寻找的淡出效果。

希望这可以帮助别人。

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

让我们快速做到这一点。

 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 } 

添加一个子视图不能简单地把它放在一个animateWithDuration块中。 而且它不能使用隐藏animation。