1.比如,A ImageView上有一张图片,点击B ImageVIew 把A上的图片转移到B 上面
第一步 创建A,B 和截图View
lazy var imageView = UIImageView()
A
lazy var twoImageV = UIImageView()
B
lazy var snapView = UIView()
截图View
把 A,B和snap添加到View上,给A添加图片
第二步 获取A的截图 :
snapshotView(afterScreenUpdates afterUpdates:Bool) ->UIView?
该方法会返回一个view,即A 的截图,Bool -> true 表示代表视图的属性改变渲染完毕后截屏,bool->false代表立刻将当前状态的视图截图
self.snapView = imageView.snapshotView(afterScreenUpdates: true)!
self.snapView.frame = self.view.convert(imageView.frame, from: view);
self.view.addSubview(self.snapView)
.convert(CGRect,from:view) 这个方法可以获取某个view上子view的frame,
上面步骤,就可以获取最简单的A imageView的截图
第三部 实现简单的uiview动画,将截图转移到B imageView 上面
UIView.animate(withDuration: 1, delay: 0, options: .curveEaseIn, animations: { self.snapView.frame = self.view.convert(self.twoImageV.frame, from: self.view) }) { (_) in self.twoImageV.image = self.imageView.image self.snapView.removeFromSuperview() }
可用场景:添加购物车,移动交换Cel,点击放大图片。。。。l
网友评论