图片浏览器

  项目需要做类似淘宝等商城的商品图片浏览器,网上已经有一些类似的第三方框架例如MWPhotoBrowser等,这里介绍一下自己实现的细节,可以参考学习下不同Controller之间的转场动画。

  首先要搞明白层次结构,我们需要的效果是:点击图片轮播器中的某张图片,弹出大图,可以缩放,滑动可以切换图片,点击大图,缩放回对应的小图。所以,我们Modal出CollectionView来是图片可以滑动切换,在其每个ItemCell中放一个ViewController,在ViewController的View中添加ScrollView,在ScrollView中添加ImageView,来显示图片,同时使图片可以缩放。做好层次结构之后,只需要把对应的需要展示图片设置好,就ok了。

  然后就是做转场动画的效果。

  指定要弹出的Controller的Moda的Style,以及代理

    photoVc.modalPresentationStyle = UIModalPresentationCustom;
    photoVc.transitioningDelegate = self;

  遵守代理协议  UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate

  实现代理方法:

- (nullable id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source;  // 负责转场
- (nullable id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed; // 负责结束转场
- (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext; // 转场时间
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext; // 转场动画的具体细节

现在就可以按照自己想要的方式做转场动画了。

具体代码可以参考Demo

原文地址:https://www.cnblogs.com/yangzhifan/p/5080272.html