博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift 点击imageView全屏预览(UIview中弹出提示框)
阅读量:5790 次
发布时间:2019-06-18

本文共 2140 字,大约阅读时间需要 7 分钟。

hot3.png

   func didTap() {

        print("浏览照片")

        let image = self.chatImageView.image

        let window = self.viewController().view

        let backgroundView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: WIDTH, height: HEIGHT))

        oldFrame = self.chatImageView.convert(self.chatImageView.bounds, to: window)

        backgroundView.backgroundColor = UIColor.black

        backgroundView.alpha = 0.5

        let imageView = UIImageView.init(frame: oldFrame)

        imageView.image = image

        imageView.tag = 1

        backgroundView.addSubview(imageView)

        window?.addSubview(backgroundView)

        //点击图片缩小的手势

        let tap = UITapGestureRecognizer.init(target: self, action: #selector(self.hideImage(tap:)))

        tap.numberOfTapsRequired = 1

        let longTap = UILongPressGestureRecognizer.init(target: self, action: #selector(self.alertShow))

        backgroundView.addGestureRecognizer(tap)

        backgroundView.addGestureRecognizer(longTap)

 

        UIView.animate(withDuration: 0.3) {

            imageView.frame =  CGRect.init(x: 0, y: (HEIGHT - (image?.size.height)! * WIDTH/(image?.size.width)!)/2, width: WIDTH, height: (image?.size.height)! * WIDTH/(image?.size.width)!)

            backgroundView.alpha = 1

        }

    }

    

    func hideImage(tap: UITapGestureRecognizer) {

        let backgroundView = tap.view

        let imageView = tap.view?.viewWithTag(1) as! UIImageView

        UIView.animate(withDuration: 0.3, animations: {

            imageView.frame = self.oldFrame

            backgroundView?.alpha = 0

        }) { (finished) in

            backgroundView?.removeFromSuperview()

        }

       

    }

    

    func alertShow() {

 

        let alert = UIAlertController.init(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.actionSheet)

        let action1 = UIAlertAction.init(title: "下载图片", style: UIAlertActionStyle.default) { (action) in

 

        }

        let action2 = UIAlertAction.init(title: "Cancel", style: UIAlertActionStyle.cancel) { (action) in

 

        }

        alert.addAction(action1)

        alert.addAction(action2)

        self.viewController().present(alert, animated: true, completion: nil)

    }

    //获取当前视图所在控制器

    func viewController () -> (UIViewController){

        var next:UIResponder?

        next = self.next!

        repeat {

            if ((next as?UIViewController) != nil) {

                return (next as! UIViewController)

            }else {

                next = next?.next

            }

        } while next != nil

        return UIViewController()

    }

转载于:https://my.oschina.net/u/3382458/blog/1620902

你可能感兴趣的文章
搭建网站必不可少的知识8
查看>>
RHEL5.1安装 VM TOOL
查看>>
Perl开发的几个小注意事项
查看>>
SQL Server数据库备份恢复常见问题(不断更新中)
查看>>
实现hive proxy1-hive认证实现
查看>>
LinuxShell脚本之利用rsync+ssh实现Linux文件系统远程备份
查看>>
设计和使用维护计划
查看>>
Hyper-V 2016 系列教程3 Hyper-V 组件的添加
查看>>
func install in ubuntu-server
查看>>
PostgreSQL数据库pg_dump命令行不输入密码的方法
查看>>
asp教程八:访问数据库
查看>>
Linux 文件系统权限记序
查看>>
Exchange2010高可靠性和可用性解决方案
查看>>
Oracle osw监控工具的使用示例
查看>>
基于SpringMVC的Cookie常用操作详解
查看>>
java读取Excel文件
查看>>
病毒在网络上传播的基本途径分析
查看>>
Mac系统中在Finder中显示(隐藏)隐藏文件
查看>>
perl学习笔记(9)
查看>>
使用Intel Thread Profiler查看Parallel.For性能
查看>>