UIScrollView 手势放大、连续点击放大
// // ViewController.m // TestUIScrollView // // Created by on 15-3-16. // Copyright (c) 2015年 va. All rights reserved. // #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, strong) UIImageView *imgView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; _scrollView.delegate = self; _scrollView.minimumZoomScale = 1.0; _scrollView.maximumZoomScale = 2.0; [self.view addSubview:_scrollView]; _imgView = [[UIImageView alloc] initWithFrame:self.view.bounds]; [_scrollView addSubview:_imgView]; [_imgView setImage:[UIImage imageNamed:@"img.jpg"]]; _imgView.contentMode = UIViewContentModeScaleAspectFit; UITapGestureRecognizer *doubleTapGez = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleClick:)]; doubleTapGez.numberOfTapsRequired = 2; doubleTapGez.numberOfTouchesRequired = 1; [_imgView addGestureRecognizer:doubleTapGez]; [_imgView setUserInteractionEnabled:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return _imgView; } - (void)doubleClick:(UITapGestureRecognizer *)tapGez { CGPoint pointInView = [tapGez locationInView:_imgView]; CGFloat zoomScale = _scrollView.zoomScale * 2; CGFloat scale = MIN(zoomScale, _scrollView.maximumZoomScale); CGFloat w = _scrollView.bounds.size.width / scale; CGFloat h = _scrollView.bounds.size.height / scale; CGFloat x = pointInView.x - (w/2.0); CGFloat y = pointInView.y - (h/2.0); CGRect rect = CGRectMake(x, y, w, h); return [_scrollView zoomToRect:rect animated:YES]; } @end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架