捏合视图变化(视图的缩放), 单击随着鼠标移动, 双击放大视图,再双击还原视图

IOS自定义图片浏览器,支持浏览多张图片,点击,双击,两手指缩放操作,并显示加载进度条 图片浏览器Controller的主要思路是:新建一个 JZAlbumViewController,在这个controller里主要显示一个UIScrollView,这个UIScrollView用来显示左右的图片, 根据传入的图片数组imgArr来设置 contentSize self.scrollView.contentSize = CGSizeMake(self.imgArr.coun 阅读详情
//
//  CLView.m
//  Homework_UIEvent
//
//  Created by lanouhn on 14-8-26.
//  Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//

#import "CLView.h"

@interface CLView ()
//{
//    CGPoint _firstPreviousLocation;
//    CGPoint _secondPreviousLocation;
//}
@end

@implementation CLView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.multipleTouchEnabled = YES;
    }
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    static int i = 1;
    //双击放大, 再次双击恢复
    if (1 == touches.count && 2 == [[touches anyObject] tapCount]) {
        if (1 == i % 2) {
            self.bounds = CGRectMake(0, 0, self.bounds.size.width * 3.0, self.bounds.size.height * 3.0);
        } else {
            self.bounds = CGRectMake(0, 0, self.bounds.size.width / 3.0, self.bounds.size.height / 3.0);
        }
        i++;
    }
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    //获取两个点移动之后的位置
    NSArray *allTouches = [touches allObjects];
    UITouch *firstTouch = [allTouches firstObject];
    UITouch *secondTouch = [allTouches lastObject];
    
    //获取两个手指之前的位置
    CGPoint firstPreviousLocation = [firstTouch previousLocationInView:self];
    CGPoint secondPreviousLocation = [secondTouch previousLocationInView:self];
    //获取两个手指当前位置
    CGPoint firstCurrentLocation = [firstTouch locationInView:self];
    CGPoint secondCurrentLocation = [secondTouch locationInView:self];
    
    //若只有一个手指触摸屏幕并移动时, view同样移动
    if (1 == [touches count]) {
        self.center = CGPointMake(self.center.x + firstCurrentLocation.x - firstPreviousLocation.x, self.center.y + firstCurrentLocation.y - firstPreviousLocation.y);
        return;
    }
    
    
    //获取之前两个点的距离
    CGFloat previousDistance = [self distanceOfPoint1:firstPreviousLocation point2:secondPreviousLocation];
    //获取当前两个点的距离
    CGFloat currentDistance = [self distanceOfPoint1:firstCurrentLocation point2:secondCurrentLocation];
    
//    NSLog(@"%g", previousDistance);
    //求变化的比例
    CGFloat scale = currentDistance / previousDistance;
    //修改视图的大小, 按比例缩放
    self.bounds = CGRectMake(0, 0, self.bounds.size.width * scale, self.bounds.size.height * scale);
    
}

//计算两个点的距离
- (CGFloat)distanceOfPoint1:(CGPoint)point1 point2:(CGPoint)point2
{
    CGFloat dx = point1.x - point2.x;
    CGFloat dy = point1.y - point2.y;
    return sqrt(pow(dx, 2) + pow(dy, 2));
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

@end

动态图表缩放:从交互原理到ECharts实战,实现高性能数据探索 数据可视化是现代数据分析的核心环节,其核心价值在于将复杂数据转化为直观的图形,辅助决策洞察。其基本原理是通过坐标映射与图形渲染,将数据维度映射为视觉通道。在技术实现上,动态交互能力是提升可视化价值的关键,它允许用户从被动查看转为主动探索,通过缩放、平移等操作深入数据细节,完成从宏观趋势发现到微观根因分析的分析闭环。尤其在处理时间序列、地理信息等高密度数据时,动态缩放功能不可或缺,它能显著提升金融分析、科学研究和运维监控等场景的探索效率与洞察深度。本文以热门的ECharts库为例,深入剖析动态缩放的设计思路与 阅读详情

相关推荐

移动端CAD装配体交互开发:基于Three.js与Unity的技术实现

三维可视化与计算机辅助设计(CAD)技术正从传统工作站向移动端延伸,其核心原理在于通过模型轻量化、实时渲染引擎与交互逻辑重构,将复杂的三维数据在性能受限的设备上流畅呈现。这项技术的核心价值在于打破了设计工作的物理限制,实现了设计评审、现场沟通与协作流程的即时化与泛在化。其典型应用场景包括移动端装配体查看、拆分演示、干涉检查以及远程协同评审等。本文聚焦于实现移动端装配体操作这一具体需求,详细探讨了基于WebGL的Three.js与跨平台游戏引擎Unity两套主流技术栈,从模型轻量化处理、场景构建、手势交互到装

weixin_34327761的博客 459

模拟双击事件以及图片放大基点问题

1 <template> 2 <div> 3 <transition name="maskTransition"> 4 <div class="alert" v-show="showValue" @click="handleShowValue()"> 5 <spa...

weixin_30591551的博客 190

QT界面,鼠标滚轮实现缩放问题

1、实现放大与缩小接口:

u012547515的专栏 1万+

Appium TouchAction与MultiAction:移动端自动化测试手势交互实战指南

移动端自动化测试的核心在于模拟真实用户交互,而触摸手势是其中关键的技术维度。从基础的单点触控到复杂的多点触控,其原理在于通过底层驱动将连续的动作序列转化为设备可识别的触摸事件。掌握手势自动化不仅能提升测试场景的真实性,更能覆盖如长按、滑动、缩放等高频交互场景,对电商浏览、地图操作、游戏连招等应用测试至关重要。本文聚焦Appium框架中的TouchAction与MultiAction两大API,通过实战解析单指手势的链式构建与多指协同的精密编排,帮助测试工程师突破点击与输入的局限,实现更贴近用户行为的自动化验

weixin_33696106的博客 387

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库02

每个分支下又细分了四个关键方向,并按照“研究对象/焦点、基本问题、核心理论/概念、研究方法、应用/目标、前沿/发展”的框架进行阐述,严格遵循了六级编码体系。在最终整合时,应建立唯一的学科分类编码表(例如,用两位数字或“ART”、“MED”、“ECO”等字母前缀),并确保所有下级编码(尺度、层次、类别、子类、具体项)的逻辑一致性。此回答中的编码为示例,实际系统需据此调整。控制过程(前馈、同期、反馈)、全面质量管理(TQM)、平衡计分卡(BSC)定量(调查、实验)、定性(访谈、民族志)、混合方法、大数据。

weixin_49199313的博客 674

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01

此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。

weixin_49199313的博客 1476

第四节 QML交互、信号、动画与状态

本章让界面"动起来、活起来"。覆盖交互体系(鼠标/触摸/键盘/焦点/拖拽)、动画(Animation/Behavior/Transition/状态机)与性能注意事项。读完你应能写出流畅、可维护的交互界面。

ITOfDragon的博客 157

pinchzoom手机图片缩放插件

pinchzoom手机图片缩放插件,简单使用容易上手。只需要引用一个js文件即可使用

移动端两指及放大、缩小、还原、旋转等操作

笔者两指放大缩小利用了v-touch实现,而其他操作利用算法实现 直接附上主要代码作为记录,省略部分css样式 <template> <div> <div class="bigwrap" id="moveDiv" :style="Style" @touchstart="down" @touchmove.prevent="move" @touchend="end" >

weixin_43772661的博客 1942

Pinchzoom.js插件实现手指触摸图片放大缩小

Pinchzoom.js插件实现手指触摸图片放大缩小

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文详细解析了OpenCV图像去畸变的原理与实战方法,对比了三种核心函数(标准、鱼眼、全景模型)的适用场景与效果。重点提供了完整的代码示例,并深入探讨了alpha、焦距、中心点等关键参数的调优技巧,以帮助开发者有效矫正镜头畸变,提升计算机视觉任务精度。

life6的博客 553

unity手指触摸放大缩小,旋转,双击,长按

模型放大缩小: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enlarge : MonoBehaviour { Vector2 oldPos1; Vector2 oldPos2; // Use this for initializa...

Y1172215784的博客 4140

从零到一:用MSC Nastran Patran搞定悬臂翼颤振分析(附完整模型文件)

本文详细介绍了使用MSC Nastran和Patran进行悬臂翼颤振分析的完整流程,从几何建模、网格划分到模态分析和颤振求解。通过具体案例讲解关键参数设置和操作技巧,帮助工程师掌握气动弹性分析的核心方法,并附赠完整模型文件供实践参考。

weixin_42563415的博客 439

点击图片进行放大,再次点击就缩小到原来的地方

首先写一个类  写放大缩小的方法// // BigImage.h // TapImageBigAndSmall // // Created by lxy on 15-4-7. // Copyright (c) 2015年 Shenzhen MSD Technology Co.,LTD. All rights reserved. // #import #import @interfa

iOS野狼的专栏 6216

【NCBI】SRA toolkit安装及使用-Windows&Linux版本

由于市面上的文章介绍SRA toolkit基本上都是基于Linux,而在windows下运行SRA toolkit基本上可以达到相同的效果且更为方便,故本文将分别阐明在Windows和Linux环境下SRA toolkit的安装及使用。

weixin_48076899的博客 2万+

吃透Chisel语言.04.Chisel基础(一)——信号类型和常量

开始肯定是介绍Chisel的基础内容了,《Chisel基础》这一部分主要会介绍数字设计中的两个基本组件:组合电路和触发器。这俩基本组件都不复杂,但是组合在一起就可以得到规模很大、功能也很强大的数字电路了。 第一部分我们就简单地看看Chisel中的信号类型和常量,在上一篇文章中也有相关介绍,其中还包括和Verilog之间的对比。......

github-3rr0r的博客 3822

ios 图片拖拽,捏,双击放大缩小,以及保存到相册

图片拖拽,放大缩小原来是可以不用自己写算法的,直接用UIscrollView即可实现。 保存相册就比较简单了。 比较麻烦的地方: 捏,双击等动作形成的放大、缩小效果需要准确定位。 h文件: // // DetailPopStarView.h // Gukw // #import <UIKit/UIKit.h> #import "AsyncIm...

weixin_30544657的博客 247

VS Code/TRAE集成Cppcheck并启用MISRA规则

本文探讨了嵌入式开发中Cppcheck工具集成与MISRA规则检查的必要性。详细介绍了安装配置步骤:安装VSCode/TRAE、Cppcheck软件、配置插件参数、安装Python环境,并重点说明了MISRA规则文件的设置方法。通过完整的配置流程,实现了嵌入式开发环境下静态检查与安全标准的落地。

SDFangFang2025的博客 1282
上一篇: 平移视图效果
下一篇: 霓虹灯动态效果,限定文本框的输如长度
vaercly
博客等级 码龄12年 46粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值