1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > swift 点击图片预览 有放大缩小动画

swift 点击图片预览 有放大缩小动画

时间:2023-10-04 03:30:15

相关推荐

swift 点击图片预览 有放大缩小动画

//Cell的点击事件let rect = targetCell.convert(targetCell.chatImageView.frame, to: self.listTableView)let rect2 = self.listTableView.convert(rect, to: self.view)//获取状态栏的rectlet statusRect = UIApplication.shared.statusBarFrame//获取导航栏的rectlet navRect = self.navigationController?.navigationBar.framelet navBarHeight = statusRect.height + (navRect?.height)!let tapFrame = CGRect.init(x: rect2.origin.x, y: rect2.origin.y + navBarHeight, width: rect2.width, height: rect2.height)let image = targetCell.chatImageView.imageshowZoomImageView(image, tapFrame:tapFrame)//图片缩放动画func showZoomImageView(image:UIImage, tapFrame:CGRect) {let bgView = UIScrollView.init(frame: UIScreen.main.bounds)bgView.backgroundColor = UIColor.clearlet tapBg = UITapGestureRecognizer.init(target: self, action: #selector(tapBgView(tapBgRecognizer:)))bgView.addGestureRecognizer(tapBg)let tmpImageView = UIImageView.init()tmpImageView.setImage(image, "default_image")tmpImageView.frame = bgView.frametmpImageView.contentMode = .scaleAspectFitbgView.addSubview(tmpImageView)UIApplication.shared.keyWindow?.addSubview(bgView)self.lastImageView = tmpImageViewself.originalFrame = tapFrameself.scrollView = bgViewself.scrollView?.maximumZoomScale = 3.0self.scrollView?.minimumZoomScale = 1.0self.scrollView?.delegate = selfself.lastImageView?.frame = self.originalFrameUIView.animate(withDuration: 0.5,delay: 0.0,options: UIViewAnimationOptions.beginFromCurrentState,animations: {self.lastImageView?.frame = (self.scrollView?.bounds)!self.scrollView?.backgroundColor = UIColor.blackself.scrollView?.zoomScale = 1.0}, completion: nil)}@objc func tapBgView(tapBgRecognizer:UITapGestureRecognizer){self.scrollView?.contentOffset = CGPoint.zeroUIView.animate(withDuration: 0.3, animations: {self.lastImageView?.frame = self.originalFrametapBgRecognizer.view?.backgroundColor = UIColor.clear}) { (finished:Bool) intapBgRecognizer.view?.removeFromSuperview()self.scrollView = nilself.lastImageView = nil}}//可缩放的viewfunc viewForZooming(in scrollView: UIScrollView) -> UIView? {return self.lastImageView}//缩放响应,设置imageView的中心位置func scrollViewDidZoom(_ scrollView: UIScrollView) {var centerX = scrollView.center.xvar centerY = scrollView.center.ycenterX = scrollView.contentSize.width > scrollView.frame.size.width ?scrollView.contentSize.width/2:centerXcenterY = scrollView.contentSize.height > scrollView.frame.size.height ?scrollView.contentSize.height/2:centerYself.lastImageView?.center = CGPoint(x: centerX, y: centerY)}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。