第0步 : 下载工具类,拖入项目中
github.com/zhYes/Anima…
第1步 : 导入头文件
#import "LYQuestionsOneAnimationTrasition.h" ///设置属性 @property (nonatomic,strong)LYQuestionsOneAnimationTrasition * animatedTransition;
第2步 : 设置代理
//1.设置代理 self.animatedTransition = [[LYQuestionsOneAnimationTrasition alloc] init]; self.navigationController.delegate = self.animatedTransition;
第3步 : 设置参数 完成跳转
GWMCarSourceTableViewCell * cell = (GWMCarSourceTableViewCell *)[self.carListTableView cellForRowAtIndexPath:indexPath]; CGRect imgFrame = [self getFrameInWindow:cell.carImageView]; // 2.传入必要的3个参数 [self.animatedTransition setTransitionImgView:cell.carImageView];//过渡动画的imageView [self.animatedTransition setTransitionBeforeImgFrame:imgFrame];//过渡之前imageView的frame [self.animatedTransition setTransitionAfterImgFrame:CGRectMake(0, 0, k_SCREEN_WIDTH, k_SCREEN_WIDTH * (275.0/375.0))];//过渡之后的imageView的frame //3.push跳转 GWMCarDetailBaseViewController * carDetail = [[GWMCarDetailBaseViewController alloc] init]; [self.navigationController pushViewController:carDetail animated:YES];
增加一个用到的方法:
// 获取imageView在window中的位置 - (CGRect)getFrameInWindow:(UIView *)view { return [view.superview convertRect:view.frame toView:nil]; }
以上已经完成了效果

美化
//1.隐藏目标控制器的图片,延迟转场后再显示 [self performSelector:@selector(delayMethods) withObject:nil afterDelay:0.25];//需要用到转场动画的地方 //2.图片的模式最好设置成 UIViewContentModeScaleAspectFit [cell.carImageView setContentMode:UIViewContentModeScaleAspectFit]; //3.A->B B->C 如果仅仅B->C实现效果且B->A不使用 在B中增加 : - (void)viewWillAppear:(BOOL)animated { if ([self.navigationController.childViewControllers.lastObject isKindOfClass:[self class]]) { self.navigationController.delegate = nil;//pop不使用过度动画 } [super viewWillAppear:animated]; }
原理讲解参app小胖子考:iOS自定义交互式转场动画-仿微approach信图片转场、酷狗转场 (从零到一 + 交互式图片浏览器)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)