//
// 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
相关推荐
移动端CAD装配体交互开发:基于Three.js与Unity的技术实现
三维可视化与计算机辅助设计(CAD)技术正从传统工作站向移动端延伸,其核心原理在于通过模型轻量化、实时渲染引擎与交互逻辑重构,将复杂的三维数据在性能受限的设备上流畅呈现。这项技术的核心价值在于打破了设计工作的物理限制,实现了设计评审、现场沟通与协作流程的即时化与泛在化。其典型应用场景包括移动端装配体查看、拆分演示、干涉检查以及远程协同评审等。本文聚焦于实现移动端装配体操作这一具体需求,详细探讨了基于WebGL的Three.js与跨平台游戏引擎Unity两套主流技术栈,从模型轻量化处理、场景构建、手势交互到装
模拟双击事件以及图片放大基点问题
1 <template> 2 <div> 3 <transition name="maskTransition"> 4 <div class="alert" v-show="showValue" @click="handleShowValue()"> 5 <spa...
QT界面,鼠标滚轮实现缩放问题
1、实现放大与缩小接口:
Appium TouchAction与MultiAction:移动端自动化测试手势交互实战指南
移动端自动化测试的核心在于模拟真实用户交互,而触摸手势是其中关键的技术维度。从基础的单点触控到复杂的多点触控,其原理在于通过底层驱动将连续的动作序列转化为设备可识别的触摸事件。掌握手势自动化不仅能提升测试场景的真实性,更能覆盖如长按、滑动、缩放等高频交互场景,对电商浏览、地图操作、游戏连招等应用测试至关重要。本文聚焦Appium框架中的TouchAction与MultiAction两大API,通过实战解析单指手势的链式构建与多指协同的精密编排,帮助测试工程师突破点击与输入的局限,实现更贴近用户行为的自动化验
【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库02
每个分支下又细分了四个关键方向,并按照“研究对象/焦点、基本问题、核心理论/概念、研究方法、应用/目标、前沿/发展”的框架进行阐述,严格遵循了六级编码体系。在最终整合时,应建立唯一的学科分类编码表(例如,用两位数字或“ART”、“MED”、“ECO”等字母前缀),并确保所有下级编码(尺度、层次、类别、子类、具体项)的逻辑一致性。此回答中的编码为示例,实际系统需据此调整。控制过程(前馈、同期、反馈)、全面质量管理(TQM)、平衡计分卡(BSC)定量(调查、实验)、定性(访谈、民族志)、混合方法、大数据。
【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01
此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。
第四节 QML交互、信号、动画与状态
本章让界面"动起来、活起来"。覆盖交互体系(鼠标/触摸/键盘/焦点/拖拽)、动画(Animation/Behavior/Transition/状态机)与性能注意事项。读完你应能写出流畅、可维护的交互界面。
pinchzoom手机图片缩放插件
pinchzoom手机图片缩放插件,简单使用容易上手。只需要引用一个js文件即可使用
移动端两指及放大、缩小、还原、旋转等操作
笔者两指放大缩小利用了v-touch实现,而其他操作利用算法实现 直接附上主要代码作为记录,省略部分css样式 <template> <div> <div class="bigwrap" id="moveDiv" :style="Style" @touchstart="down" @touchmove.prevent="move" @touchend="end" >
Pinchzoom.js插件实现手指触摸图片放大缩小
Pinchzoom.js插件实现手指触摸图片放大缩小
OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)
本文详细解析了OpenCV图像去畸变的原理与实战方法,对比了三种核心函数(标准、鱼眼、全景模型)的适用场景与效果。重点提供了完整的代码示例,并深入探讨了alpha、焦距、中心点等关键参数的调优技巧,以帮助开发者有效矫正镜头畸变,提升计算机视觉任务精度。
unity手指触摸放大缩小,旋转,双击,长按
模型放大缩小: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enlarge : MonoBehaviour { Vector2 oldPos1; Vector2 oldPos2; // Use this for initializa...
从零到一:用MSC Nastran Patran搞定悬臂翼颤振分析(附完整模型文件)
本文详细介绍了使用MSC Nastran和Patran进行悬臂翼颤振分析的完整流程,从几何建模、网格划分到模态分析和颤振求解。通过具体案例讲解关键参数设置和操作技巧,帮助工程师掌握气动弹性分析的核心方法,并附赠完整模型文件供实践参考。
点击图片进行放大,再次点击就缩小到原来的地方
首先写一个类 写放大缩小的方法// // BigImage.h // TapImageBigAndSmall // // Created by lxy on 15-4-7. // Copyright (c) 2015年 Shenzhen MSD Technology Co.,LTD. All rights reserved. // #import #import @interfa
【NCBI】SRA toolkit安装及使用-Windows&Linux版本
由于市面上的文章介绍SRA toolkit基本上都是基于Linux,而在windows下运行SRA toolkit基本上可以达到相同的效果且更为方便,故本文将分别阐明在Windows和Linux环境下SRA toolkit的安装及使用。
吃透Chisel语言.04.Chisel基础(一)——信号类型和常量
开始肯定是介绍Chisel的基础内容了,《Chisel基础》这一部分主要会介绍数字设计中的两个基本组件:组合电路和触发器。这俩基本组件都不复杂,但是组合在一起就可以得到规模很大、功能也很强大的数字电路了。 第一部分我们就简单地看看Chisel中的信号类型和常量,在上一篇文章中也有相关介绍,其中还包括和Verilog之间的对比。......
ios 图片拖拽,捏,双击放大缩小,以及保存到相册
图片拖拽,放大缩小原来是可以不用自己写算法的,直接用UIscrollView即可实现。 保存相册就比较简单了。 比较麻烦的地方: 捏,双击等动作形成的放大、缩小效果需要准确定位。 h文件: // // DetailPopStarView.h // Gukw // #import <UIKit/UIKit.h> #import "AsyncIm...
VS Code/TRAE集成Cppcheck并启用MISRA规则
本文探讨了嵌入式开发中Cppcheck工具集成与MISRA规则检查的必要性。详细介绍了安装配置步骤:安装VSCode/TRAE、Cppcheck软件、配置插件参数、安装Python环境,并重点说明了MISRA规则文件的设置方法。通过完整的配置流程,实现了嵌入式开发环境下静态检查与安全标准的落地。
459



被折叠的 条评论
为什么被折叠?



