动画片
动画
UIView和CALayer这两种动画的区别就是UIView会真正的改变frame,而CALayer只是改变了视图效果,视图并没有真正的改变.
先插句题外话:今天知道了结构体转对象用 NSValue from
动画是提高用户交互的神器,主要有UIView动画和CALayer动画.我们经常用到的还是UIView的Block动画 一定要弄清楚参数.
UIView的属性动画
#pragma mark UIView - PorpertyAnimations - (void)handlePorpertyAnimation { //开始动画 [UIView beginAnimations:nil context:nil]; //设置动画执行的时间(时间单位是秒) [UIView setAnimationDuration:1]; //设置动画重复的次数 [UIView setAnimationRepeatCount:2]; //设置动画是否反转 [UIView setAnimationRepeatAutoreverses:YES]; //设置动画的变化曲线 [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; //设置UIView旋转 self.redView.transform = CGAffineTransformRotate(self.redView.transform, M_PI) ; //设置代理人 [UIView setAnimationDelegate:self]; //设置动画结束的时候执行的操作 [UIView setAnimationDidStopSelector:@selector(restorePresentState)]; //设置动画从当前状态开始 [UIView setAnimationBeginsFromCurrentState:YES]; //指定需要做动画的视图的属性 self.redView.center = CGPointMake(self.redView.center.x, self.redView.center.y + 200); //改变视图的透明度 self.redView.alpha = 0.0;
[UIView commitAnimations];必须记得提交
过渡动画
//处理过度动画 - (void)handleTransitionAnimation { //单一视图的过度动画 // [UIView transitionWithView:self.redView duration:1.0 options: UIViewAnimationOptionTransitionFlipFromLeft animations:^{ // self.redView.transform = CGAffineTransformScale(self.redView.transform, 0.9, 0.9); // } completion:^(BOOL finished) { // self.redView.transform = CGAffineTransformScale(self.redView.transform, 10/9.0, 10/9.0); // }]; //两个视图之间的过度动画 UIView *greenView = [[UIView alloc]initWithFrame:self.redView.frame]; greenView.backgroundColor = [UIColor greenColor]; [UIView transitionFromView:self.redView toView:greenView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) { [UIView transitionFromView:greenView toView:self.redView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) { }]; }]; }
//Block动画样式4 弹簧效果 //参数1:动画执行的时间;参数2:动画延迟执行的时间 参数3:代表弹簧的振动频率(数值越小振动频率越高) 参数4:开始的速度 参数5:动画的效果(是否反转,重复,变化曲线) 参数6:执行的动画操作,参数7:动画执行完成的操作 [UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:10 options:UIViewAnimationOptionCurveEaseIn animations:^{ self.bannerBtn.center = CGPointMake(self.bannerBtn.center.x, self.bannerBtn.center.y + 100); } completion:^(BOOL finished) { self.bannerBtn.center = CGPointMake(self.bannerBtn.center.x, self.bannerBtn.center.y - 100); }];
CALayer动画:
//默认状态下视图的基准点和锚点与视图的中心点重合,视图旋转的时候必须围绕一个点进行旋转,但是这个点必须保证视图的锚点和基准点刚好在该位置重合.锚点的坐标范围(0~1之间) //因为基准点是相对父视图坐标而言,所以锚点必须主动向基准点靠齐.
UIView和CALayer这两种动画的区别就是UIView会真正的改变frame,而CALayer只是改变了视图效果,视图并没有真正的改变.
版权声明:本文为博主原创文章,未经博主允许不得转载。