开发绘图、手势综合App注意点

手势的一些注意事项

对于 UITapGestureRecognizer 来说我们一般需要知道该点击手势在屏幕中的位置 (locationInView:self)

对于 UIPanGestureRecognizer 来说我们一般需要知道我们的滑动手势移动了多少距离 (translationInView:pan)

-(void) pan: (UIPanGestureRecognizer * ) pan {
  CGPoint transP = [pan translationInView: pan.view]; //$1 = (x = 0.73990527317289434, y = 0)
  CGPoint pont1 = [pan locationInView: self]; //$2 = (x = 198.16665649414063, y = 342.33332824707031)
  CGPoint pont2 = [pan locationInView: self.imageV]; //$3 = (x = 198.12057060663793, y = 342.61609831987914)
  pan.view.transform = CGAffineTransformTranslate(pan.view.transform, transP.x, transP.y);
  //复位
  [pan setTranslation: CGPointZero inView: pan.view];
}
[UIView animateWithDuration: 0.25 animations: ^ {
    self.imageView.alpha = 0;
  }completion: ^ (BOOL finished){
    self.imageView.alpha = 1;
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [self.layer renderInContext: ctx];
    UIImage * imageGot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [self.imageView removeFromSuperview];
    if (self.delegate && [self.delegate respondsToSelector: @selector(handleImageView: didOperatedImage: )]){
      [self.delegate handleImageView: self didOperatedImage: imageGot];
    }
  }
];

接下来来一个iOS图形绘制、旋转、长按、缩放、滑动等综合手势的一个 画图 项目

源码地址:https://github.com/FantasticLBP/BlogDemos/tree/master/

以上就是本次我们分享的全部内容,感谢你对我们的支持。

您可能感兴趣的文章:

  • iOS实现手势滑动解锁功能简析
  • iOS左滑手势失效的解决方法
  • IOS开发之手势响应事件优先级的实例详解
  • IOS 开发之swift中手势的实例详解
  • IOS开发笔记之禁用手势滑动返回功能的示例
  • IOS中多手势之间的冲突和解决办法
  • IOS 单击手势的添加实现代码
  • IOS中各种手势操作实例代码
(0)

相关推荐

  • iOS左滑手势失效的解决方法

    iOS7之后,苹果优化了一个小功能,就是对于UINavagationController堆栈里的UIViewController,只要轻轻在视图控制器的左边缘右滑一下,该视图控制器就会pop出栈(前提当然是对于非根视图控制器而言).实现方法很简单,一句话搞定: self.navigationController.interactivePopGestureRecognizer.enabled = YES; 事实上对于一个视图控制器而言,该属性的默认值即为YES,因此不设置也能实现右滑pop的功能.

  • IOS中各种手势操作实例代码

    先看下效果 手势相关的介绍 IOS中手势操作一般是 UIGestureRecognizer 类的几个手势子类去实现,一般我们用到的手势就这么5种: 1.点击  UITapGestureRecognizer 2.平移  UIPanGestureRecognizer 3.缩放  UIPinchGestureRecognizer 4.旋转  UIRotationGestureRecognizer 5.轻扫  UISwipeGestureRecognizer 我们上面这个实例中就用到了上面这5种手势,不

  • IOS开发笔记之禁用手势滑动返回功能的示例

    在ios7以后,苹果推出了手势滑动返回功能,也就是从屏幕左侧向右滑动可依返回上一个界面.这项功能在大多数情况下方便了用户的使用,但是有时候,我们并不需要手势返回功能,比如某个页面加入了左右滑动翻页功能,用户在使用的时候很容易就返回到上一级界面了. 禁用滑动返回手势需要在改界面的ViewController中添加如下代码: - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // 禁用返回手势 if ([se

  • IOS中多手势之间的冲突和解决办法

    IOS中多手势之间的冲突和解决办法 UIImageView默认是不支持交互的,也就是userInteractionEnabled=NO ,因此要接收触摸事件(手势识别),必须设置userInteractionEnabled=YES(在iOS中UILabel.UIImageView的userInteractionEnabled默认都是NO,UIButton.UITextField.UIScrollView.UITableView等默认都是YES). 在iOS中,如果一个手势A的识别部分是另一个手势

  • iOS实现手势滑动解锁功能简析

    题记 在平常的生活中,我们大概经常遇见手势滑动解锁---也就是九宫格啊,已经出现好久了,虽然随着Apple的指纹解锁的发展手势解锁虽然还有但是因为其不如指纹解锁方便也用的也少了,但是在大多数APP中这两种方式都是并存的,比如qq,微信,支付宝等等,最近项目里面也刚好有这个需求,趁着刚完成抽出时间来记录下来当时的一些思路,可能有的地方理解的不到位,还需多总结,闲言少叙了,看重点. 功能描述如图:大概说一下思路,这个功能用来做相当于密令,用于两端的匹配,教师端设置了路径生成密码,储存在本地,学生端用

  • IOS 开发之swift中手势的实例详解

    IOS 开发之swift中手势的实例详解 手势操作主要包括如下几类 手势 属性 说明 点击 UITapGestureRecognizer numberOfTapsRequired:点击的次数:numberOfTouchesRequired:点击时有手指数量 设置属性 numberOfTapsRequired 可以实现单击,或双击的效果 滑动 UISwipeGestureRecognizer direction:滑动方向 direction 滑动方向分为上Up.下Down.左Left.右Right

  • IOS 单击手势的添加实现代码

    IOS 单击手势的添加实现代码 一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController <UIGestureRecognizerDelegate> @end RootViewController.m #import "RootViewController.h" @interface RootV

  • IOS开发之手势响应事件优先级的实例详解

    IOS开发之手势响应事件优先级的实例详解 交互响应事件都是通过手势的操作完成的,如点击.或双击.或长按,这些交互都是在视图中完成的,但是不同的视图可能会有不同的交互,有时候就会出现交互响应事件冲突的情况.这时候就需要处理事件优先级,以便达到想要的效果. 示例场景:一个自定义模式视图view中,有一个列表视图table,同时有一个确定的按钮视图button:在view中有一个单击事件UITapGestureRecognizer,在table中点击每个cell也会有点击事件,同样的button中有个

  • 开发绘图、手势综合App注意点

    手势的一些注意事项 对于 UITapGestureRecognizer 来说我们一般需要知道该点击手势在屏幕中的位置 (locationInView:self) 对于 UIPanGestureRecognizer 来说我们一般需要知道我们的滑动手势移动了多少距离 (translationInView:pan) -(void) pan: (UIPanGestureRecognizer * ) pan { CGPoint transP = [pan translationInView: pan.vi

  • Android开发之手势检测及通过手势实现翻页功能的方法

    本文实例讲述了Android开发之手势检测及通过手势实现翻页功能的方法.分享给大家供大家参考,具体如下: 手势是指用户手指或触摸笔在触摸屏上的连续触碰的行为,比如在屏幕上从左至右划出的一个动作,就是手势,再比如在屏幕上画出一个圆圈也是手势.手势这种连续的触碰会形成某个方向上的移动趋势,也会形成一个不规则的几何图形.Android对两种手势行为都提供了支持: 1. 对于第一种手势行为而言,Android提供了手势检测,并为手势检测提供了相应的监听器. 2. 对于第二种手势行为,Android允许开

  • Android开发之开发者头条APP(三)实现首页

    相关阅读: Android开发之开发者头条(一)启动页实现 Android开发之开发者头条(二)实现左滑菜单 title: 带你实现开发者头条APP(三) 首页实现 tags: 轮播广告,ViewPager切换,圆形图片 grammar_cjkRuby: true 一.前言 今天实现开发者头条APP的首页.是本系列的第三篇文章,效果图如下: 从gif动态效果图中我们可以看出,最外层有三个tab(精选,订阅,发现),在精选界面顶部有一个轮播的图片广告,广告下面是一个精选文章列表. 二.外层三个ta

  • Android开发实现图片切换APP

    本文实例为大家分享了Android开发实现图片切换APP的具体代码,供大家参考,具体内容如下 本次介绍的是关于图片切换的APP,这里实现了两种切换效果: 不同的效果针对不同的情况,两种效果的代码都会介绍: 代码-布局: main.xml的代码: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="

  • Android开发中如何去掉app标题栏的实现

    方法 一.若创建Activity时继承的是 Activity: 第一种:常用的一种方法: requestWindowFeature(Window.FEATURE_NO_TITLE);//这行代码必须写在setContentView()方法的前面 package com.wust.selfviewgroup; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.os

  • Android游戏开发 自定义手势--输入法手势技术

    进行软件开发时,通常我们都喜欢使用较新版本的工具,但这里我为什么使用低版本的SDK来开发Android游戏呢?这里介绍下原因: 1.Android SDK 属于向下兼容!那么低版本可以运行的,高版本基本上更是没问题!(当然每次SDK的更新也会带来新功能,或者修改了一些原来的BUG等等,那么其实对于游戏开发来说,如果你的游戏中不需要更高的SDK版本的支持情况下,完全不必去追求最新的SDK!) 2.使用低版本进行游戏开发这样能兼顾更多的机型,获取更多的用户! 3.大家都知道Android SDK 每

  • 微信小程序开发教程-手势解锁实例

    手势解锁是app上常见的解锁方式,相比输入密码方式操作起来要方便许多.下面展示如何基于微信小程序实现手机解锁.最终实现效果如下图: 整个功能基于canvas实现,首先添加画布组件,并设定样式 <!--index.wxml--> <view class="container"> <canvas canvas-id="id-gesture-lock" class="gesture-lock" bindtouchstart

  • 使用jQuery Mobile框架开发移动端Web App的入门教程

    一.jQuery Mobile 的渐进增强设计与浏览器支持 根据维基百科( Wikipedia ) 的解释,渐进增强的设计主要包括以下几点 basic content should be accessible to all web browsers (所有浏览器都应能访问全部基础的内容) basic functionality should be accessible to all web browsers (所有浏览器都应能访问全部基础的功能) sparse, semantic markup

  • 如何使用Flutter开发一款电影APP详解

    前言 使用Flutter开发一款App是一件非常愉快的事情,其出色的性能.跨多端以及数量众多的原生组件都是我们选择Flutter的理由!今天我们就来使用Flutter开发一款电影类的App,先看下App的截图. 从main.dart开始 在Flutter里main.dart是应用开始的地方: import 'package:flutter/material.dart'; import 'package:movie/utils/router.dart' as router; void main()

随机推荐