拖动手势UIPanGestureRecognizer

简介: 拖动手势UIPanGestureRecognizer

1.拖动手势简介拖动手势(UIPanGestureRecognizer)可以修改一个UI控件的位置,在有些游戏类App中比较常见。拖动事件发生时,通过translationInView:方法,可以得到一个CGPoint类型的返回值,即位置的偏移量,可以根据偏移量修改对应UI控件的center属性从而实现UI控件的位置移动效果。


- (CGPoint)translationInView:(nullable UIView *)view;


2.示例代码在下面的示例代码中,创建了一个UIImageView对象,并为其添加了一个拖动手势,用户可以把该UIImageView控件拖动到屏幕的任意位置。创建一个Single View Application应用。在ViewController.m文件中添加如下代码,该代码创建了拖动手势。


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //创建UIImageView对象
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 250, 150, 150)];
    imageView.image = [UIImage imageNamed:@"logo"];
    imageView.userInteractionEnabled = YES;
    [self.view addSubview:imageView];
    //拖动手势
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
    [imageView addGestureRecognizer:panGesture];
}


添加pan:方法,实现UI控件位置更新操作。


- (void)pan: (UIPanGestureRecognizer *)gesture {
    NSLog(@"%s", __func__);
    //获取位置变化量translation
    CGPoint translation = [gesture translationInView:self.view];
    gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
    [gesture setTranslation:CGPointZero inView:self.view];
}


当用户拖动该控件时,pan:方法会被反复调用,如图8-73、图8-74所示。


2466108-bb26167049206f47.webp.jpg


图8-73 移动效果


2466108-5e249ac8c8371a1a.webp.jpg


运行结果


摘自《iOS开发:从零基础到精通》


目录
相关文章
|
9天前
|
图形学
Unity UGUI实现鼠标拖动图片
在 Unity UGUI 中实现鼠标拖动图片功能,主要涉及事件检测、坐标转换和物体位置更新。根据鼠标移动量更新图片位置。代码示例展示了如何通过这些步骤实现拖动效果。
|
9月前
滑动工具条
滑动工具条
64 0
Avalonia 实现平滑拖动指定控件
Avalonia 实现平滑拖动指定控件
250 0
|
JavaScript 前端开发
js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
原文:js实现移动端图片预览:手势缩放, 手势拖动,双击放大... 前言本文将介绍如何通过js实现移动端图片预览,包括图片的 预览模式,手势缩放,手势拖动,双击放大等基本功能; 扫码查看示例效果: 代码地址http://pangyongsheng.github.io/imgPreview/ 一、功能介绍   图片预览主要有以下几个功能点组成: 监听图片点击事件,进入图片预览模式 自定义手势事件, (双指缩放,滑动,双击。
3283 0
SwiftUI—如何给视图添加拖动手势
SwiftUI—如何给视图添加拖动手势
637 0
|
移动开发 前端开发 JavaScript
Canvas之鼠标滑动特效
Canvas之鼠标滑动特效
257 0
Canvas之鼠标滑动特效
|
UED
uwp - 做一个相对炫酷的动画按钮/按钮动画
原文:uwp - 做一个相对炫酷的动画按钮/按钮动画   看腻了系统自带的button animation何不尝试下自定义一个较为炫酷的动画顺便提升用户体验。效果图: 动画分为几个部分,分别是:内圆从中心放大(1)并同时渐隐(2),外圆从中心放大(3)并同时渐隐(4),按钮整体从中心缩小放大(5),非常简单对吧,代码也是。
1122 0
|
Android开发
Android 自定义控件之SlidingMenuVertical顶部悬浮(垂直折叠抽屉,有滑动渐变回调,可自行添加渐变动画)
顶部悬浮(垂直折叠抽屉,有滑动渐变回调,可自行添加渐变动画)
2095 0
|
C# 前端开发
WPF 一个弧形手势提示动画
原文:WPF 一个弧形手势提示动画 这是一个操作提示动画,一个小手在屏幕上按照一个弧形来回运动 ...
735 0
|
C#
【WPF】点击滑动条(Slider),移动滑块(Tick)到鼠标点击的位置
原文:【WPF】点击滑动条(Slider),移动滑块(Tick)到鼠标点击的位置 问题:点击Slider控件时,滑块会自动跳到滑动条的最边缘位置,无法跳到鼠标点击的位置上。 办法:给Slider控件设置属性IsMoveToPointEnabled="True"即可!   https://stackoverflow.
2117 0