[ios]Gesture与scrollView分别实现图片触控

ScrollView方法


- (void)viewDidLoad
{
[super viewDidLoad];
self.imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Cool.jpg"]];
NSLog(@"%@",NSStringFromCGRect(self.view.frame));

self.scrollView.frame=self.view.frame;
self.imageView.frame=self.scrollView.frame;
NSLog(@"%@",NSStringFromCGRect(self.imageView.frame));
[self.imageView setContentMode:UIViewContentModeScaleAspectFit];
self.scrollView.delegate=self;
[self.scrollView setMaximumZoomScale:5.0];
[self.scrollView setMinimumZoomScale:1.0];
[self.scrollView addSubview:self.imageView];
// self.scrollView.contentSize=CGSizeMake(320, 1000);

// Do any additional setup after loading the view, typically from a nib.
}

#pragma mark - UIScrollViewDelegate
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return self.imageView;
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}[/code]


Gesture方法

//
// PLGestureZoomDemoVC.m
// ZoomScrollView
//
// Created by liu poolo on 14-4-2.
// Copyright (c) 2014年 liu poolo. All rights reserved.
//

#import “PLGestureZoomDemoVC.h”;

@interface PLGestureZoomDemoVC (){
UIPinchGestureRecognizer *_gst;
float _lastScale;
CGSize beginImageViewSize;
}

@end

@implementation PLGestureZoomDemoVC


- (void)viewDidLoad
{
[super viewDidLoad];
self.image=[UIImage imageNamed:@"Cool.jpg"];
self.imageView=[[UIImageView alloc]initWithImage:self.image];
self.imageView.center=self.view.center;


[self.view addSubview:self.imageView];
_gst=[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureResponse:)];

[self.imageView addGestureRecognizer:_gst];
UITapGestureRecognizer *tapGtr=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureResponse:)];
tapGtr.numberOfTapsRequired=2;
[self.imageView addGestureRecognizer:tapGtr];

self.imageView.userInteractionEnabled=YES;
beginImageViewSize=self.imageView.frame.size;

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}


-(void)pinchGestureResponse:(UIPinchGestureRecognizer *) pinGst{

if(pinGst.state==UIGestureRecognizerStateBegan){
_lastScale=pinGst.scale;
}
float scale=pinGst.scale/_lastScale;
_lastScale=pinGst.scale;
[pinGst.view setTransform:CGAffineTransformScale(pinGst.view.transform, scale, scale)];
NSLog(@"%f",scale);


}

-(void)tapGestureResponse:(UITapGestureRecognizer *) tapGst{

[tapGst.view setTransform:CGAffineTransformScale(tapGst.view.transform, beginImageViewSize.width/tapGst.view
.frame.size.width, beginImageViewSize.height/tapGst.view
.frame.size.height)];
}

@end
【产品经理修炼之道】- 优惠券系统从入门到精通(一) 为了满足企业的优惠券业务,优惠券系统一般需要包含哪些功能?这篇文章里,作者从架构、功能等维度做了拆解,一起来看看吧。此部分主要讲解为满足公司优惠券业务,需要优惠券系统必须包含哪些功能,即优惠券架构图。 阅读详情

相关推荐

最大似然估计、梯度下降、EM算法、坐标上升

主要讲解的是机器学习中参数学习算法之间的区别,以及应用的场景。 最大似然估计: 其中目标函数是对数似然函数。为了求目标函数取最大值时的theta。有两个关机键步骤,第一个是对目标函数进行求导,第二个是另导数等于0,求解后直接得到最优theta。两个步骤缺一不可。 梯度下降: 对目标函数进行求导,利用导函数提供的梯度信息,使参数往梯度下降最快的方向移动一小步,来更新参数。为什

tzl2093的博客 5141

iOS,scrollview手势冲突

/**      * 1. **手势冲突**      tableviewcell可以触发点击,同时tableview的父视图有点击识别,这样点击的时候就会产生冲突。解决方法在GestureRecgnizer代理方法里面区分手势。      */      #pragma mark tapGestureRecgnizerdelegate 解决手势冲突     -

yutaotst的专栏 5093

<Verilog实现除法器> Verilog实现牛顿-拉夫逊(Newton-Raphson)除法器

阿斯顿阿斯顿啊啊是打发士大夫

IC跳跳鱼的博客 3585

React Native Gallery Toolkit常见问题与解决方案:从安装错误到手势冲突处理

React Native Gallery Toolkit是一个基于Reanimated 2和Gesture Handler构建的强大画廊实现,为React Native开发者提供了流畅的图片浏览体验。本文将详细解答使用过程中可能遇到的常见问题,从安装错误到手势冲突处理,帮助你快速解决问题并充分发挥该工具包的潜力。 ## 安装相关问题及解决方案 ### 依赖安装失败 安装React Nativ

gitblog_00377的博客 435

京东联盟API实战:5分钟搞定商品返利链接生成(附Python代码)

本文详细介绍了如何利用京东联盟API快速构建自动化商品返利链接生成系统。通过Python代码实战,从API申请、环境配置到核心功能封装,手把手教你实现批量商品信息查询与推广链接生成,帮助内容创作者和开发者大幅提升电商推广效率。

weixin_29216957的博客 673

vscode远程开发-调试模式下attach远程进程提示管理员权限失败的问题

vscode 远程开发 附加进程

comhaqs的专栏 2878

Unity移动开发手势插件FingerGestures v3.1:从核心原理到实战应用

在Unity移动应用开发中,流畅自然的手势交互是提升用户体验的关键。手势识别的核心原理在于将多点触控的原始输入数据,通过算法转化为如点击、滑动、缩放、旋转等高级语义操作,其技术价值在于将复杂的底层输入处理封装为简单易用的组件,从而让开发者能更专注于业务逻辑与创意实现。这一技术广泛应用于移动游戏、AR/VR应用、互动教育及电商产品展示等需要丰富触控交互的场景。本文聚焦于FingerGestures v3.1这一成熟的手势插件解决方案,详细解析其如何通过封装离散手势与连续手势的识别逻辑,并提供清晰的组件化架构与

weixin_30443747的博客 408

思科路由器IPv6各种路由协议配置

思科路由器IPv6路由协议配置:1、静态路由配置;2、默认路由配置;3、RIPng路由配置;4、OSPFv3路由配置。

weixin_41687096的博客 6543

iOS开发者必学:GKNavigationBarViewController配置与主题定制技巧

作为一名iOS开发者,你是否厌倦了系统导航栏的局限性?想要实现像今日头条、网易新闻那样流畅的导航栏联动效果吗?GKNavigationBarViewController就是你需要的终极解决方案!这个强大的iOS自定义导航栏框架让每个控制器都拥有独立的导航栏,轻松实现各种炫酷的导航栏效果。 ## 🎯 为什么选择GKNavigationBarViewController? GKNavigatio

gitblog_00663的博客 1041

【系统架构设计师-2024下半年真题】案例分析-参考答案及部分详解(完整回忆版)

根据h中描述,为了保证高可靠性,有ping/echo,心跳机制两种策略,从资源利用率问为啥心跳更好。王工觉得使用ping/echo好,但李工觉得从系统资源利用率来说,使用心跳机制好 1、针对质量属性可以使用ping/echo和心跳模式实现,分别简述ping/echo和心跳的实现原理。 2、张工认为心跳策略比较适合,简述为什么?

数据知道的博客 1万+

Unreal 从入门到精通之VR常用操作

本文总结了使用Unreal5开发VR项目时遇到的常见问题及其解决方案。首先,介绍了如何通过VRPawn的TryTeleport函数设置玩家视角位置,确保头显移动时安全区域的正确传送。其次,详细说明了如何在Unreal中播放视频,包括导入视频文件、创建媒体播放器和媒体纹理,并将其应用到3D物体上。接着,讲解了如何播放VR全景视频,建议使用MediaPlate媒体板并调整几何体为球体。最后,讨论了如何手动打开和关闭VR模式,以便在PC模式和头显模式之间切换。这些方法为VR开发提供了实用的技术指导。

TxNet 951

ag-kit 移动设计思考协议:防止 AI 落入默认模式的“反记忆化“移动设计决策框架

本文以 ag-kit 仓库 `mobile-design` 技能中的 [mobile-design-thinking.md](https://link.gitcode.com/i/0177f9d54cfbce90b3469631b06adcff) 为主体,完整解读其"深度移动思考协议"(Deep Mobile Thinking Protocol):包括五步思考流程、AI 默认模式禁用清单、逐屏组件

gitblog_01128的博客 135

使用MCAL的Fee模块集成ETAS存储协议栈

由于ETAS Fee模块导致初始化时间较长,且集成占用的内存较大,所以最终考虑使用MCAL中的Fee模块来集成ETAS的Nvm模块,本文介绍具体的集成方法注意:本文所涉及的集成前提是原有的ETAS协议栈已正常使用使用IFX Fee需要手动配置Fee,可能有出错的风险,最好是利用脚本自动生成代码来实现。另外,需要注意IFX的Fee中block数据没有CRC校验,如果使用该Fee,建议Nvm中加CRC校验(ETAS Fee中block自带CRC,可以不需要Nvm Crc),防止数据被意外篡改导致的异常。

赞的博客 404

PageView手势冲突解决方案:3种手势类型深度解析

在SwiftUI开发中,实现页面导航时的手势冲突是常见挑战。GitHub加速计划中的PageView组件(项目路径:gh_mirrors/pa/PageView)通过三种手势类型设计,为iOS和watchOS应用提供了灵活的冲突解决方案。本文将深入解析每种手势类型的适用场景与实现原理,帮助开发者快速解决页面切换中的手势干扰问题。 ## 为什么手势冲突会发生? PageView作为模仿UIPag

gitblog_00895的博客 361

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【精通篇】:基于HarmonyOS API 24 React Native鸿蒙跨平台开发包含输入收入金额、选择收入类别、记录ImagePreview 图片预览(图片放大预览)

还有一种处理富文本的方式,也是IE 最早实现的,即指定contenteditable 属性。可以给页面中的任何元素指定contenteditable 属性,然后该元素会立即被用户编辑。这种方式更受欢迎,因为。contentEditable 属性有3 个可能的值:"true"表示开启,"false"表示关闭,"inherit"表示。通过designMode 属性,可以将这个空白文档变成可以编辑的,实际编辑的则是元素。都会变成可以编辑的(显示插入光标),从而可以像使用文字处理程序一样编辑文本,通过键盘将文本。

wanmeijuhao的博客 289

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

UI/UX Pro Max Skill 快速参考全解:覆盖 10 大类别 240+ 条 UI/UX 审查规则的静态清单

本篇技术指南以 `ui-ux-pro-max-skill` 仓库中 [quick-reference.md](https://link.gitcode.com/i/146825b2053bc3ae40571aa651b3f29e) 为核心,完整解析该 Skill 内置的 10 大类别、约 240 条 UI/UX 审查规则:从 Accessibility 到 Charts & Data 的完整规则名

gitblog_00709的博客 381

TGLStackedViewController高级技巧:自定义布局与动画效果终极指南

TGLStackedViewController是一个强大的iOS堆叠视图控制器库,它通过UICollectionView实现了类似Passbook和Reminders应用的卡片堆叠布局和手势重排功能。这款开源工具让开发者能够轻松创建具有视觉吸引力的卡片式界面,支持手势交互和自定义动画效果,为用户提供流畅的交互体验。本文将深入探讨TGLStackedViewController的高级技巧,帮助你掌

gitblog_01092的博客 503

Harvey LAB评估哲学:为什么法律工作不能接受95%

Harvey LAB(Legal Agent Benchmark)是一个开源的法律AI智能体评估基准,它最"较真"的设计是全通过评分:一个任务只有在每一条评分标准都通过时才得分,否则直接计0分。为什么法律AI不能接受95%的准确率?这篇文章带你读懂这套评估哲学的设计动机、LLM裁判的判分机制,以及如何正确解读"0分"背后的诊断数据 📊 [![Harvey LAB法律AI智能体评估基准项目横幅]

gitblog_01053的博客 904

iOS开发的一些奇巧淫技

TableView不显示没内容的Cell怎么办? 类似这种,我不想让下面那些空的显示. 很简单. 1 self.tableView.tableFooterView = [[UIView alloc] init]; 试过的都说好. 加完这句之后就变成了这样. 自定义了leftBarbuttonItem左滑返回手

Kiven's Program Space 2959

React Native on openHarmony 手势冲突解决方案:从原理到实战

React Native 作为跨端开发主流方案,在 openHarmony 设备上运行时,由于底层组件由 ArkUI 原生渲染,触摸事件链路与 Android 存在显著差异,横向拖拽与纵向滚动、双指缩放等手势冲突频发。理解事件分发原理与手势优先级是解决问题的前提。围绕 PanResponder 条件抢占、react-native-gesture-handler 手势组合以及 ArkUI 原生手势兜底三类方案,结合真实项目中的方向阈值判断、动态 scrollEnabled、长按拖拽排序等实践,给出可直接落地的

weixin_32050773的博客 120

React Native鸿蒙跨平台模态框采用绝对定位(`position: ‘absolute‘`)覆盖整个屏幕,背景使用半透明黑色(`rgba(0,0,0,0.25)`)营造层次感

本文探讨了社团公告详情页的React Native实现与鸿蒙(HarmonyOS)跨端迁移方案。通过极简状态管理(useState)处理弹窗交互,采用分层视觉设计确保信息层级清晰,并运用组件化架构实现原生能力调用。重点分析了React Native与鸿蒙ArkTS的技术映射关系,包括状态管理、UI声明、样式系统等核心能力的转换策略,并以模态弹窗模块为例展示了具体迁移过程。该方案为轻量级页面提供了高效的跨端开发思路,实现最小化改动、最大化复用的目标。

czhm57的博客 607

Android 开源项目分类汇总指南:android-open-project 五大板块全景索引与选型参考

本文以开源仓库 android-open-project 的中文主文档 [README.zh.md](https://link.gitcode.com/i/f4fe4b84277f82d3a0a351eeb57caad2) 为骨架,系统梳理其收录的 Android 开源项目全景:从个性化控件(View)到常用工具库,从完整优秀项目到开发/测试工具,再到值得关注的优秀个人与组织。阅读本文后,你将获得

gitblog_01128的博客 466

Hermes Studio App开发进度复盘:跨平台协作与协作批注功能实践

跨平台开发技术能够有效降低多端适配成本,让同一套业务逻辑同时覆盖iOS与Android,在移动应用快速迭代的背景下成为诸多团队的首选技术路线。以React Native为代表的成熟框架,配合TypeScript的类型安全与组件化模式,能够显著提升开发效率与代码可维护性。在构建包含文件管理、在线预览、版本追踪等多模块的协作型应用时,状态管理、权限控制、接口联调等工程环节是保障页面稳定体验的关键。设计素材的批注能力要求前端实现精准的坐标换算与手势交互,后端则需依托JWT机制确保角色权限隔离。移动端开发者在处理大

weixin_34295316的博客 422

Android 开源项目分类汇总(android-open-project)完整指南:个性化控件、工具库与开发测试工具全景索引

android-open-project 是一个**分类汇总型的 Android 开源项目索引仓库**,其价值不在于提供可运行的源码,而在于用一套清晰、可检索的分类体系,把海量第三方开源项目按"控件 → 库 → 项目 → 工具 → 人"的维度组织起来。 从 [docs/oss-program-readiness.md](https://link.gitcode.com/i/c52df8b982c

gitblog_00983的博客 438

基于React Native鸿蒙跨平台实现微动漫资讯应用的核心业务,HarmonyOS API 24,围绕内容标签切换、列表浏览、详情跳转、点赞、分页加载、筛选标签、搜索反馈

描述符的一个示例用法就是将类属性的初始化延迟到被实例访问时。如果这些属性的初始化依赖全局应用上下文的话,那么这一点可能有用。另一个使用场景是初始化的代价很大,但在导入类的时候不知道是否会用到这个属性。这样的描述符可以按照如下所示来实现:defdef’)else:’)下面是示例用法:m.lazily_m.lazilycached!

2401_86113894的博客 597

基于React Native和鸿蒙系统的跨端教育百科类应用开发方案,HarmonyOS API 24,通过useState实现轻量状态管理,涵盖标签切换、列表展示、详情跳转等核心功能

在 Python 2 中,没有指定任何祖先的类被认为是旧式类。(self, obj, value):在读取属性时将调用这一方法(被称为 getter)。幸运的是,多亏了 Python 描述符的工作方式。• super 的使用必须一致:在类的层次结构中,要么全部用 super,要么全不用。它是一个类,定义了另一个类的属性的访问方式。为了避免前面提到的所有问题,在 Python 在这个领域取得进展之前,我们需要考虑以。Python 提供这一特性是为了避免继承中的名称冲突,因为属性被重命名为以类名为前。

2401_86113894的博客 806

SwiftUIPager深度解析:构建高性能跨平台滚动界面的5个最佳实践

SwiftUIPager是一个专为SwiftUI设计的原生滚动容器组件,它实现了类似轮播图的效果,可以在iOS、macOS、tvOS以及watchOS等多个平台上运行。这个库通过复用页面视图来优化内存管理,使得在大量数据下也能流畅滚动。SwiftUIPager支持垂直和水平方向的布局,并提供了卡片对齐、自定义动画等丰富的配置选项,是构建现代移动应用界面不可或缺的组件。 ## 问题场景:为什么需要

gitblog_00313的博客 319
上一篇: [ios]block写法
下一篇: [ios]UIVIew的初始化执行方法
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值