swiftSwift

swift实现图片浏览器

2016-05-23  本文已影响1054人  亡灵诅咒

swift实现图片浏览器

class NetWorkTool: AFHTTPSessionManager {
//提供一个单列对象
static let shareInstance : NetWorkTool = {
let shareInstance = NetWorkTool()
shareInstance.responseSerializer.acceptableContentTypes?.insert("text/html")
return shareInstance
}()
//提供结构,将请求到的数据通过闭包传递
func loadData(offset: Int,finishCallBack: (data:[[String: NSObject]]?, error: NSError? ) ->()){
let url = "http://mobapi.meilishuo.com/2.0/twitter/popular.json?offset=(offset)&limit=30&access_token=b92e0c6fd3ca919d3e7547d446d9a8c2"
GET(url, parameters: nil, progress: nil, success: { (, result) -> Void in
guard let dic = result as? [String: NSObject] else{
return
}
guard let dicArray = dic["data"] as? [[String: NSObject]] else{
return
}
finishCallBack(data: dicArray, error: nil)
}) { (
, error) -> Void in

            finishCallBack(data: nil, error: error)
    }
}

}
```

extension PhotoBrowserAnimation:UIViewControllerAnimatedTransitioning{
    
    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
        //设置转场动画的时间
        return 1.0
    }
    
    func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
        if isPresent {
            guard let indexpath = indexpath ,presentDelegate = presentDelegate else{
                return
            }
            //设置转场动画
            //1.获取弹出的view
            let presentView = transitionContext.viewForKey(UITransitionContextToViewKey)
            //2.model的原理:将当前显示的view移除,将需要展示的View添加到containerView上面,由于我们是自定义的转场动画,需要自己来讲view添加到containerView上面
            //获取动画的图片
            let imageview = presentDelegate.presentImage(indexpath)
            //设置图片的尺寸和位置
            imageview.frame = presentDelegate.presentStartRect(indexpath)
            //展示图片
            transitionContext.containerView()?.addSubview(imageview)
            transitionContext.containerView()?.backgroundColor = UIColor.blackColor()
            //3.设置动画
            UIView.animateWithDuration(transitionDuration(transitionContext), animations: { () -> Void in
                imageview.frame = presentDelegate.presentEndRect(indexpath)
                }) { (_) -> Void in
                    //需要告诉系统转动动画结束
                    transitionContext.containerView()?.backgroundColor = UIColor.clearColor()
                    transitionContext.containerView()?.addSubview(presentView!)
                    transitionContext.completeTransition(true)
                    imageview.removeFromSuperview()
            }
        }else{
            guard let indexpath = indexpath , dismissDelegate = dismissDelegate else{
                return
            }
            //获取消失的view
            let dismissView = transitionContext.viewForKey(UITransitionContextFromViewKey)
            //获取结束动画的图片
            let imageView = dismissDelegate.dismissImage(indexpath)
            //将图片添加到contrainerView
            transitionContext.containerView()?.addSubview(imageView)
            let srartIndepath = dismissDelegate.dismissEndRect()
            //获取起始小图的位置
            let endRect = presentDelegate!.presentStartRect(srartIndepath)
            dismissView?.alpha = endRect == CGRectZero ? 1.0 : 0.0
            UIView.animateWithDuration(transitionDuration(transitionContext), animations: { () -> Void in
                if endRect == CGRectZero{
                    dismissView?.alpha = 0.0
                    imageView.alpha = 0.0
                }else{
                    imageView.frame = endRect
                }
                }, completion: { (_) -> Void in
                    dismissView?.removeFromSuperview()
                    transitionContext.completeTransition(true)
            })
        }
    }
}
111.gif
上一篇 下一篇

猜你喜欢

热点阅读