努力的人生才是美妙
1.下面是本人对自定义转场动画的理解
A.首先我们要自定义一个转场的代理对象 (#import "TransitionAnimator.h")
B.接着我们需要在这个转场代理类中实现代理方法
2.转场动画的注意点
A.一般我们用做转场动画的代理对象就是继承NSObject 的,例如TransitionAnimator 继承自NSObject ,我们需要导入#import<UIKit/UIKit.h>头文件才能继续敲代码
B.将要展示的控制器,和当前控制器不要搞混淆
C.转场动画结束后,我们一定需要告诉系统,我们动画完成了,这句代码非常重要,否者界面一直卡住不动.
3.下面是一个小小的案例
下面是该例实现的具体细节
1.首先是程序运行开始的时候第一个界面(展示的控制器:ViewController)
实现思路:就是加载了一个storyboard 上面添加了一个按钮
2.当我们点击按钮的时候,
- (IBAction)clickButton:(UIButton *)sender {
FirstController *vc = [[FirstController alloc] init];
[self presentViewController:vc animated:YES completion:nil];
}
3.以上两部就是了白色控制器转化为橘色控制器
4.橘色控制器之所以可以拖动,是我在FirstController(橘色控制器)上面添加了手势,设置了锚点具体手势和锚点在这我就描述了.
关键代码:
这个是设置锚点的位置,和FirstController 控制器的frame
//设置锚点,和位置
self.view.layer.anchorPoint = CGPointMake(0.5, 1.5);
self.view.frame = [UIScreen mainScreen].bounds;
设置角度的代码,还有transForm 的变换
//设置旋转的角度
CGFloat offserX = offsetPoint.x;
//计算旋转的角度
CGFloat scale = offserX * 1.0 /sender.view.bounds.size.width;
CGFloat angele = scale * M_PI_2;
panView.transform = CGAffineTransformMakeRotation(angele);
panView.transform = CGAffineTransformIdentity;
接下来是转场动画代理的实现代码