专栏首页码客iOS 图片预览 放大缩小的实现方式

iOS 图片预览 放大缩小的实现方式

原理

UIImageView放到UIScrollView中 对UIImageView添加点击事件实现

具体代码

添加代理UIScrollViewDelegate

涉及的两个View

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var showImageView: UIImageView!

添加事件

func addEvent(){
    self.scrollView.isMultipleTouchEnabled = true;
    self.scrollView.maximumZoomScale = 5.0;
    self.scrollView.minimumZoomScale = 1;
    self.scrollView.delegate = self;
    
    self.showImageView.isUserInteractionEnabled = true;
    
    let tapImgOnce = UITapGestureRecognizer.init(target: self, action: #selector(tapImgViewHandle(image:)))
    tapImgOnce.numberOfTapsRequired = 1;
    tapImgOnce.numberOfTouchesRequired = 1;
    self.showImageView.addGestureRecognizer(tapImgOnce)
    
    let tapImgTwice = UITapGestureRecognizer.init(target: self, action: #selector(tapImgViewHandleTwice(image:)))
    tapImgTwice.numberOfTapsRequired = 2;
    tapImgTwice.numberOfTouchesRequired = 1;
    self.showImageView.addGestureRecognizer(tapImgTwice)
    
    tapImgOnce.require(toFail: tapImgTwice);
}
@objc func tapImgViewHandle(image:UIImageView){
    self.dismiss(animated: false, completion: nil)
}
    
@objc func tapImgViewHandleTwice(image:UIImageView){
    if(self.scrollView.zoomScale > 1){
        self.scrollView.setZoomScale(1, animated: true)
    }else{
        self.scrollView.setZoomScale(3, animated: true)
    }
}
    
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return self.showImageView;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS文件上传的几种形式

    二进制流不能附加其他的参数 multipart/form-data形式可以附加其他参数

    剑行者
  • UIBarButtonItem设置Badge

    UIBarButtonItem 默认是不能 设置 Badge 所以我们可以对它扩展使之支持

    剑行者
  • iOS 自定义UIImagePickerController

      前后值不能切换,各种尝试找了半天没找到有原因。后来发现我在设置图片尺寸的时候设置为1080P[self.session canSetSessionPrese...

    剑行者
  • jenkins python 接口封装

                    self.server = Jenkins(self.url)

    用户2398817
  • python爬虫教程:批量抓取 QQ 群信息

    本文讲解Python批量抓取 QQ 群信息,包括群名称、群号、群人数、群主、地域、分类、标签、群简介等内容,返回 XLS / CSV / JSON 结果文件。

    python学习教程
  • 使用Python写Windows Ser

    如果你想用Python开发Windows程序,并让其开机启动等,就必须写成windows的服务程序Windows Service,用Python来做这个事情必...

    用户2398817
  • Quartz2D复习(三) --- 涂鸦

    和上一篇手势解锁不一样,手势解锁只画了一条路径,从触摸开始--》触摸移动--》触摸结束 ,然后路径完成了,渲染出来就是手势解锁了;

    tandaxia
  • 静态html提取正文的API和开源算法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    周小董
  • Python高级进阶#006 pyqt5类封装

    刘金玉编程
  • 基于深度学习和经典方法的文本分类

    文本分类应该是自然语言处理中最普遍的一个应用,例如文章自动分类、邮件自动分类、垃圾邮件识别、用户情感分类等等,在生活中有很多例子,这篇文章主要从传统和深度学习两...

    段石石

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动