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块和选项,单独尝试animationaddSubview
也addSubview
。 我发现一个解决方法是将子视图的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。