UIImageView

从名字上我们就能知道, Tap(点击)、Pinch(捏合)、Rotation(旋转)、Swipe(滑动,快速移动,是用于监测滑动的方向的)、Pan (拖移,慢速移动,是用于监测偏移的量的)以及 LongPress(长按)。

  1. (Tap)点击作为最常用手势,用于按下或选择一个控件或条目(类似于普通的鼠标点击)、
  2. (Drag)拖动用于实现一些页面的滚动,以及对控件的移动功能。
  3. (Flick)滑动用于实现页面的快速滚动和翻页的功能。
  4. (Swipe)横扫手势用于激活列表项的快捷操作菜单
  5. (Double Tap)双击放大并居中显示图片,或恢复原大小(如果当前已经放大)。同时,双击能够激活针对文字编辑菜单。
  6. (Pinch open)放大手势可以实现以下功能:打开订阅源,打开文章的详情。在照片查看的时候,放大手势也可实现放大图片的功能。
  7. (Pinch close)缩小手势,可以实现与放大手势相反且对应的功能的功能:关闭订阅源退出到首页,关闭文章退出至索引页。在照片查看的时候,缩小手势也可实现缩小图片的功能。
  8. (Touch &Hold)在我的订阅页,长按订阅源将自动进入编辑模式,同时选中手指当前按下的订阅源。这时可直接拖动订阅源移动位置。
  9. 针对文字长按,将出现放大镜辅助功能。松开后,则出现编辑菜单。
  10. 针对图片长按,将出现编辑菜单。
  11. (Shake)摇晃手势,将出现撤销与重做菜单。主要是针对用户文本输入的。

//创建手势
-(void)creatRecognizers
{
    //七大手势
    //1.轻拍手势
    //(1)创建手势对象
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
    //(2)配置属性
    //轻拍次数
    tap.numberOfTapsRequired = 1;
    //轻拍手指个数
    tap.numberOfTouchesRequired = 1;
    //将手势添加到指定视图上
    [_imageView addGestureRecognizer:tap];
    [tap release];
    
    //移除手势
    [_imageView removeGestureRecognizer:tap];
    
    //2.轻扫手势
    //创建手势对象
    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
    //配置属性
    //一个轻扫手势 只能有两个方向(上下 或 左右)
    //如果想支持 上下左右 轻扫 ,那么一个手势不能实现,需要创建两个清扫手势
    swipe.direction = UISwipeGestureRecognizerDirectionLeft;
    
    NSLog(@"====%ld",swipe.direction);
    
    //添加到指定视图
    [_imageView addGestureRecognizer:swipe];
    
    //释放所有权
    [swipe release];
    
    UISwipeGestureRecognizer *swipe2 = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
    swipe2.direction = UISwipeGestureRecognizerDirectionRight;
    [_imageView addGestureRecognizer:swipe2];
    [swipe2 release];
    
    //移除手势
    [_imageView removeGestureRecognizer:swipe];
    [_imageView removeGestureRecognizer:swipe2];
    
    
    //3.长按手势
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];
    
    //配置属性
    //最短长按时间
    longPress.minimumPressDuration = 0.5;
    //允许移动的最大距离
    longPress.allowableMovement = 10;
    
    //添加到指定视图
    [_imageView addGestureRecognizer:longPress];
    //释放所有权
    [longPress release];
    //移除手势
    [_imageView removeGestureRecognizer:longPress];
    
    //4.平移手势
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
    //添加到指定视图
    [_imageView addGestureRecognizer:pan];
    //释放所有权
    [pan release];
    //移除手势
    [_imageView removeGestureRecognizer:pan];
    
    //5.捏合手势
    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
    //添加到指定视图
    [_imageView addGestureRecognizer:pinch];
    //释放所有权
    [pinch release];
    [_imageView removeGestureRecognizer:pinch];
    
    //6.旋转手势
    UIRotationGestureRecognizer *rote = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(roteAction:)];
    
    [_imageView addGestureRecognizer:rote];
    [rote release];
    
    [_imageView removeGestureRecognizer:rote];
    
    //7.屏幕边缘手势
    UIScreenEdgePanGestureRecognizer *screenPan = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screenPanAction:)];
    
    //属性
    //设置边缘手势的位置
    screenPan.edges = UIRectEdgeLeft;
    
    
    //添加到指定视图
    [_imageView addGestureRecognizer:screenPan];
    //释放所有权
    [screenPan release];
    
      
}

<p class="p1"><span class="s1">#pragma mark - </span><span class="s2">手势触发事件</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">轻拍事件</span></p><p class="p4"><span class="s4">-(</span><span class="s5">void</span><span class="s4">)tapAction:(</span><span class="s1">UITapGestureRecognizer</span><span class="s4"> *)tap</span></p><p class="p5"><span class="s1">{</span></p><p class="p5"><span class="s1">    </span><span class="s6">NSLog</span><span class="s1">(</span><span class="s7">@"</span><span class="s8">拍了一下</span><span class="s7">"</span><span class="s1">);</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">图片的切换</span></p><p class="p5"><span class="s1">    </span><span class="s9">_index</span><span class="s1"> ++;</span></p><p class="p5"><span class="s1">    </span><span class="s5">if</span><span class="s1"> (</span><span class="s9">_index</span><span class="s1"> == </span><span class="s10">9</span><span class="s1">) {</span></p><p class="p5"><span class="s1">        </span><span class="s9">_index</span><span class="s1"> = </span><span class="s10">0</span><span class="s1">;</span></p><p class="p5"><span class="s1">    }</span></p><p class="p7"><span class="s4">    </span><span class="s5">self</span><span class="s4">.</span><span class="s1">imageView</span><span class="s4">.</span><span class="s11">image</span><span class="s4"> = [</span><span class="s12">UIImage</span><span class="s4"> </span><span class="s6">imageNamed</span><span class="s4">:</span><span class="s1">_images</span><span class="s4">[</span><span class="s1">_index</span><span class="s4">]];</span></p><p class="p2"><span class="s1">   </span></p><p class="p5"><span class="s1">}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">轻扫事件</span></p><p class="p5"><span class="s1">-(</span><span class="s5">void</span><span class="s1">)swipeAction:(</span><span class="s12">UISwipeGestureRecognizer</span><span class="s1"> *)swipe</span></p><p class="p5"><span class="s1">{</span></p><p class="p5"><span class="s1">    </span><span class="s6">NSLog</span><span class="s1">(</span><span class="s7">@"%ld"</span><span class="s1">,swipe.</span><span class="s11">direction</span><span class="s1">);</span></p><p class="p3"><span class="s13">    </span><span class="s3">//</span><span class="s1">通过轻扫方向进行判定</span></p><p class="p8"><span class="s4">    </span><span class="s5">if</span><span class="s4"> (swipe.</span><span class="s11">direction</span><span class="s4"> == </span><span class="s1">UISwipeGestureRecognizerDirectionRight</span><span class="s4">) {</span></p><p class="p2"><span class="s1">       </span></p><p class="p5"><span class="s1">        </span><span class="s9">_index</span><span class="s1"> --;</span></p><p class="p5"><span class="s1">        </span><span class="s5">if</span><span class="s1"> (</span><span class="s9">_index</span><span class="s1"> < </span><span class="s10">0</span><span class="s1">) {</span></p><p class="p5"><span class="s1">            </span><span class="s9">_index</span><span class="s1"> = </span><span class="s10">8</span><span class="s1">;</span></p><p class="p5"><span class="s1">        }</span></p><p class="p7"><span class="s4">        </span><span class="s1">_imageView</span><span class="s4">.</span><span class="s11">image</span><span class="s4"> = [</span><span class="s12">UIImage</span><span class="s4"> </span><span class="s6">imageNamed</span><span class="s4">:</span><span class="s1">_images</span><span class="s4">[</span><span class="s1">_index</span><span class="s4">]];</span></p><p class="p5"><span class="s1">        </span><span class="s6">NSLog</span><span class="s1">(</span><span class="s7">@"</span><span class="s8">右轻扫</span><span class="s7">"</span><span class="s1">);</span></p><p class="p8"><span class="s4">    }</span><span class="s5">else</span><span class="s4"> </span><span class="s5">if</span><span class="s4">(swipe.</span><span class="s11">direction</span><span class="s4"> == </span><span class="s1">UISwipeGestureRecognizerDirectionLeft</span><span class="s4">)</span></p><p class="p5"><span class="s1">    {</span></p><p class="p5"><span class="s1">        </span><span class="s6">NSLog</span><span class="s1">(</span><span class="s7">@"</span><span class="s8">左轻扫</span><span class="s7">"</span><span class="s1">);</span></p><p class="p5"><span class="s1">        </span><span class="s9">_index</span><span class="s1"> ++;</span></p><p class="p5"><span class="s1">        </span><span class="s5">if</span><span class="s1"> (</span><span class="s9">_index</span><span class="s1"> == </span><span class="s10">9</span><span class="s1">) {</span></p><p class="p5"><span class="s1">            </span><span class="s9">_index</span><span class="s1"> = </span><span class="s10">0</span><span class="s1">;</span></p><p class="p5"><span class="s1">        }</span></p><p class="p7"><span class="s4">        </span><span class="s1">_imageView</span><span class="s4">.</span><span class="s11">image</span><span class="s4"> = [</span><span class="s12">UIImage</span><span class="s4"> </span><span class="s6">imageNamed</span><span class="s4">:</span><span class="s1">_images</span><span class="s4">[</span><span class="s1">_index</span><span class="s4">]];</span></p><p class="p5"><span class="s1">    }</span></p><p class="p2"><span class="s1">    </span></p><p class="p5"><span class="s1">}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">长按事件</span></p><p class="p5"><span class="s1">-(</span><span class="s5">void</span><span class="s1">)longPressAction:(</span><span class="s12">UILongPressGestureRecognizer</span><span class="s1"> *)longPress</span></p><p class="p5"><span class="s1">{</span></p><p class="p6"><span class="s4">    </span><span class="s1">//NSLog(@"</span><span class="s2">长按</span><span class="s1">");</span></p><p class="p3"><span class="s13">    </span><span class="s3">//</span><span class="s1">对于长按手势</span><span class="s3"> </span><span class="s1">有开始</span><span class="s3"> </span><span class="s1">和</span><span class="s3"> </span><span class="s1">结束</span><span class="s3"> </span><span class="s1">状态</span></p><p class="p6"><span class="s4">    </span><span class="s1">//longPress.state</span></p><p class="p8"><span class="s4">    </span><span class="s5">if</span><span class="s4"> (longPress.</span><span class="s11">state</span><span class="s4"> == </span><span class="s1">UIGestureRecognizerStateBegan</span><span class="s4">) {</span></p><p class="p5"><span class="s1">        </span><span class="s6">NSLog</span><span class="s1">(</span><span class="s7">@"</span><span class="s8">长按开始</span><span class="s7">"</span><span class="s1">);</span></p><p class="p2"><span class="s1">        </span></p><p class="p6"><span class="s4">        </span><span class="s1">//</span><span class="s2">将图片</span><span class="s1"> </span><span class="s2">保存到相册</span></p><p class="p6"><span class="s4">  </span><span class="s1">//      UIImageWriteToSavedPhotosAlbum(<#UIImage *image#>, <#id completionTarget#>, <#SEL completionSelector#>, <#void *contextInfo#>)</span></p><p class="p5"><span class="s1">    }</span></p><p class="p5"><span class="s1">}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">平移事件</span></p><p class="p4"><span class="s4">-(</span><span class="s5">void</span><span class="s4">)panAction:(</span><span class="s1">UIPanGestureRecognizer</span><span class="s4"> *)pan</span></p><p class="p5"><span class="s1">{</span></p><p class="p3"><span class="s13">    </span><span class="s3">//</span><span class="s1">获取手势当前位置</span></p><p class="p5"><span class="s1">    </span><span class="s11">CGPoint</span><span class="s1"> position = [pan </span><span class="s6">translationInView</span><span class="s1">:</span><span class="s9">_imageView</span><span class="s1">];</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">通过</span><span class="s1">transform </span><span class="s2">进行平移变换</span></p><p class="p5"><span class="s1">    </span><span class="s9">_imageView</span><span class="s1">.</span><span class="s11">transform</span><span class="s1"> = </span><span class="s6">CGAffineTransformTranslate</span><span class="s1">(</span><span class="s9">_imageView</span><span class="s1">.</span><span class="s11">transform</span><span class="s1">, position.</span><span class="s11">x</span><span class="s1">, position.</span><span class="s11">y</span><span class="s1">);</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">将增量置为</span><span class="s1">0</span></p><p class="p8"><span class="s4">    [pan </span><span class="s1">setTranslation</span><span class="s4">:</span><span class="s11">CGPointZero</span><span class="s4"> </span><span class="s1">inView</span><span class="s4">:</span><span class="s9">_imageView</span><span class="s4">];</span></p><p class="p5"><span class="s1">}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">捏合事件</span></p><p class="p5"><span class="s1">-(</span><span class="s5">void</span><span class="s1">)pinchAction:(</span><span class="s12">UIPinchGestureRecognizer</span><span class="s1"> *)pinch</span></p><p class="p5"><span class="s1">{</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">通过</span><span class="s1"> transform </span><span class="s2">进行视图捏合</span></p><p class="p5"><span class="s1">    </span><span class="s9">_imageView</span><span class="s1">.</span><span class="s11">transform</span><span class="s1"> = </span><span class="s6">CGAffineTransformScale</span><span class="s1">(</span><span class="s9">_imageView</span><span class="s1">.</span><span class="s11">transform</span><span class="s1">, pinch.</span><span class="s11">scale</span><span class="s1">, pinch.</span><span class="s11">scale</span><span class="s1">);</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">设置比例</span></p><p class="p5"><span class="s1">    pinch.</span><span class="s11">scale</span><span class="s1"> = </span><span class="s10">1</span><span class="s1">;</span></p><p class="p5"><span class="s1">}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">旋转事件</span></p><p class="p4"><span class="s4">-(</span><span class="s5">void</span><span class="s4">)roteAction:(</span><span class="s1">UIRotationGestureRecognizer</span><span class="s4"> *)rote</span></p><p class="p5"><span class="s1">{</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">通过</span><span class="s1">transform </span><span class="s2">进行旋转变换</span></p><p class="p9"><span class="s4">    </span><span class="s9">_imageView</span><span class="s4">.</span><span class="s1">transform</span><span class="s4"> = </span><span class="s6">CGAffineTransformRotate</span><span class="s4">(</span><span class="s9">_imageView</span><span class="s4">.</span><span class="s1">transform</span><span class="s4">, rote.</span><span class="s1">rotation</span><span class="s4">);</span></p><p class="p6"><span class="s4">    </span><span class="s1">//</span><span class="s2">将旋转角度</span><span class="s1"> </span><span class="s2">置为</span><span class="s1">0</span></p><p class="p5"><span class="s1">    rote.</span><span class="s11">rotation</span><span class="s1"> = </span><span class="s10">0</span><span class="s1">;</span></p><p class="p2"><span class="s1">    </span></p><p class="p5"><span class="s1">}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p3"><span class="s3">//</span><span class="s1">屏幕边缘事件</span></p><p class="p5"><span class="s1">-(</span><span class="s5">void</span><span class="s1">)screenPanAction:(</span><span class="s12">UIScreenEdgePanGestureRecognizer</span><span class="s1"> *)screenPan</span></p><p class="p5"><span class="s1">{</span></p><p class="p5"><span class="s1">    </span><span class="s6">NSLog</span><span class="s1">(</span><span class="s7">@"</span><span class="s8">边缘手势</span><span class="s7">"</span><span class="s1">);</span></p><p class="p5"><span class="s1">}</span></p>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值