`

ios开发--旋转、移动、缩放手势实例代码

 
阅读更多

代码如下:

// 添加所有的手势
- (void) addGestureRecognizerToView:(UIView *)view
{
    // 旋转手势
    UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateView:)];
    [view addGestureRecognizer:rotationGestureRecognizer];
    
    // 缩放手势
    UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];
    [view addGestureRecognizer:pinchGestureRecognizer];
    
    // 移动手势
    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];
    [view addGestureRecognizer:panGestureRecognizer];
}

// 处理旋转手势
- (void) rotateView:(UIRotationGestureRecognizer *)rotationGestureRecognizer
{
    UIView *view = rotationGestureRecognizer.view;
    if (rotationGestureRecognizer.state == UIGestureRecognizerStateBegan || rotationGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        view.transform = CGAffineTransformRotate(view.transform, rotationGestureRecognizer.rotation);
        [rotationGestureRecognizer setRotation:0];
    }
}

// 处理缩放手势
- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
    UIView *view = pinchGestureRecognizer.view;
    if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
        pinchGestureRecognizer.scale = 1;
    }
}

// 处理拖拉手势
- (void) panView:(UIPanGestureRecognizer *)panGestureRecognizer
{
    UIView *view = panGestureRecognizer.view;
    if (panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [panGestureRecognizer translationInView:view.superview];
        [view setCenter:(CGPoint){view.center.x + translation.x, view.center.y + translation.y}];
        [panGestureRecognizer setTranslation:CGPointZero inView:view.superview];
    }
}

 

别忘了

[self addGestureRecognizerToView:view];

 

如果处理的是图片,别忘了

[imageView setUserInteractionEnabled:YES];
[imageView setMultipleTouchEnabled:YES];

 

分享到:
评论

相关推荐

    iOS手势旋转缩放拖拽图片

    在iOS SDK中,`UIGestureRecognizer` 是所有手势识别类的基类,其中包括常见的 `UIPanGestureRecognizer`(用于拖动)、`UIPinchGestureRecognizer`(用于缩放)和`UIRotationGestureRecognizer`(用于旋转)。...

    通过手势控制图片的缩放、移动、旋转

    1. **缩放手势**:缩放手势通常是通过双指捏合或分开来实现图片的放大和缩小。在iOS中,我们使用`UIPinchGestureRecognizer`,监听`UIGestureRecognizerStateBegan`、`UIGestureRecognizerStateChanged`和`...

    iOS图片旋转缩放demo

    总的来说,这个“iOS图片旋转缩放demo”涵盖了触摸事件处理、手势识别、CGAffineTransform变换以及可能的Auto Layout应用等多个iOS开发的关键知识点。通过研究这个示例,开发者可以学习到如何在实际项目中实现图片的...

    手指旋转缩放物体(里面有代码和说明)

    5. **代码结构**:项目中的代码可能包含一个或多个C#脚本,每个脚本负责特定的功能,如手势识别、物体旋转和缩放逻辑。良好的代码组织可以提高可读性和可维护性。 6. **移动优化**:在移动平台上,性能优化尤为重要...

    iOS 开发 手势与触摸事件

    - UIPinchGestureRecognizer:捏合缩放手势。 2. 创建和配置手势: 你可以使用`init(target:action:)`初始化手势识别器,并设置其属性如`numberOfTapsRequired`(点击次数)、`minimumNumberOfTouches`和`...

    iOS手势识别的详细使用方法(拖动,缩放,旋转,点击,手势依赖,自定义手势)

    - 缩放手势(Pinch):通过创建UIPinchGestureRecognizer并设置相应的回调来实现,可以调整视图的大小。 ```swift let pinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: #selector...

    IOS 缩放图片UIPinchGestureRecognizer

    在iOS开发中,为了实现用户交互,我们经常需要对图像视图进行操作,如移动、缩放和旋转。本篇文章将深入探讨如何在Objective-C或Swift中,通过使用`UIPinchGestureRecognizer`来实现这些功能。`...

    ios开发中手势多点触控实现

    首先,`UIGestureRecognizer`是iOS SDK提供的一种抽象类,用于识别不同的触摸手势,如轻拍(Tap)、滑动(Swipe)、旋转(Rotation)、捏合缩放(Pinch)、长按(Long Press)等。通过创建其子类实例并添加到视图上...

    iOS游戏应用源代码——xemus-cocos2d-GestureRecognizers-c87d379.zip

    4. **PinchGestureRecognizer**:识别缩放手势,常用于图片的放大缩小操作。 5. **RotationGestureRecognizer**:用于识别旋转手势,适用于3D场景中的对象旋转操作。 这些手势识别器通过继承自cocos2d::...

    ios-swift拼图.zip

    在Swift编程语言中,开发iOS应用时,手势交互(Gesture Recognizers)是用户界面不可或缺的一部分。这个名为"ios-swift拼图.zip"的压缩包很可能包含一个简单的拼图游戏项目,用于帮助初学者实践Swift编程和理解手势...

    iOS实例开发源码——mattnunes-duckhuntcc2d-87944c9.zip

    6. **动画和物理效果**: Cocos2D支持基于时间的动画,可以实现物体的移动、旋转、缩放等效果。物理引擎可以模拟真实世界中的重力、碰撞和其他物理行为。 7. **用户交互**: iOS设备上的触摸屏提供了丰富的交互方式,...

    ios-可拖拽的悬浮控件.zip

    在iOS应用开发中,创建一个可拖拽的悬浮控件是一项常见的需求,它能提供用户友好的交互体验,增强应用程序的灵活性。标题“ios-可拖拽的悬浮控件.zip”所指的资源是一个实现此类功能的代码示例,通过解压我们可以...

    (0100)-iOS/iPhone/iPAD/iPod源代码-手势交互(Gesture)-User Resizable View

    在iOS开发中,手势交互(Gesture)是用户体验的重要组成部分,让用户能够通过自然的手势操作界面元素,例如拖动、缩放、旋转等。本项目"(0100)-iOS/iPhone/iPAD/iPod源代码-手势交互(Gesture)-User ...

    IOS手势示例

    在"GestureDemo"这个项目中,开发者可能创建了多个手势实例,分别与不同的视图关联,通过添加手势识别器到视图上,实现了这些手势的响应。同时,代码可能会包含适当的委托方法,以便在手势触发时执行相应的功能。...

    ios-仿微信微博大图查看拖拽动画 DragToDimiss.zip

    总的来说,"ios-仿微信微博大图查看拖拽动画 DragToDimiss.zip"文件提供了一个实现手势驱动的拖拽消失动画的实例,涵盖了手势识别、视图动画、组件封装等多个iOS开发的关键知识点。对于学习和理解iOS应用中的手势...

    七大手势的综合使用,添加手势前,移除所有手势,动画效果

    在iOS和Android等移动平台开发中,手势(Gesture Recognizer)是用户与应用程序交互的重要方式。本主题将深入探讨“七大手势”的综合使用,包括如何在应用中添加、移除手势以及实现相应的动画效果。这七大手势通常指...

    ios-下载按钮动画.zip

    在iOS开发中,按钮(UIButton)是用户界面中不可或缺的元素,它允许用户与应用进行交互,执行特定操作。在给定的资源“ios-下载按钮动画.zip”中,我们聚焦于一个特定的按钮动画效果,它可能是为了增强用户体验,...

    ios-仿微信朋友圈的照片查看器.zip

    总之,“ios-仿微信朋友圈的照片查看器”是一个关于手势交互和图片查看器实现的实例,对于iOS开发者来说,研究这个项目可以帮助理解如何构建类似功能的应用,并从中学习到手势识别、滚动视图、图片加载和优化等相关...

    ios-YYCamera.zip

    通过这些手势,用户可以自由地在相机预览画面上移动、缩放和旋转贴纸,提升交互体验。 5. **视图动画** 标签“视图动画”表明项目中可能使用了`UIView`动画API,如`UIView.animate(withDuration:)`方法,用于创建...

Global site tag (gtag.js) - Google Analytics