当前位置: 首页 > news >正文

ios - 关于拖动手势简单应用场景

根据项目需求,需要一个IamgeView达到上下拖动来改变下方View高度的需求,现有手势中UIPanGestureRecognizer可以实现可以实现起上下左右拖动。

思考:在拖动时是否可以通过判断x轴和y轴的移动距离来判断是左右还是上下移动,再来禁止其左右移动。 代码部分:

//可拖动ImageView
- (void)setDragImageView{

    self.dragImageView.userInteractionEnabled = YES;
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureClick:)];
    [self.dragImageView addGestureRecognizer:panGesture];

}
- (void)panGestureClick:(UIPanGestureRecognizer *)panGest{
    
    CGPoint panGesturePoint = [panGest translationInView:self.allTitleLowerView];
    
    panGest.view.center = CGPointMake(panGest.view.center.x + 0, panGest.view.center.y - panGesturePoint.y);
    [self.answersViewHeight setConstant: self.answersViewHeight.constant - panGesturePoint.y ];

    if (panGest.state == UIGestureRecognizerStateFailed || panGest.state == UIGestureRecognizerStateEnded) {

        if (panGest.view.center.y < 20) {

            panGest.view.center = CGPointMake(panGest.view.center.x, 21);
            [self.answersViewHeight setConstant: kScreenHeight - 44 - 40];

        }

    }
    //重置拖拽手势
    [panGest setTranslation:CGPointZero inView:self.view];
}
复制代码

最后呈现效果:

PS:在网上百度时找到了他人方法需要重新自定义一个手势继承 UIPanGestureRecognizer,使用:比较底层的

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
复制代码

最终呈现出得效果一样

相关文章:

  • 第二课、GUI程序实例分析------------------狄泰软件学院
  • 第五课、Qt Creator 工程介绍------------------狄泰软件学院
  • PL/pgSQL RETURNS TABLE 例子
  • 贝塞尔曲线学习
  • 2007浙大复试上机考试题目2--统计字符
  • static作用(修饰函数、局部变量、全局变量)
  • 18 Issues in Current Deep Reinforcement Learning from ZhiHu
  • PC 微信扫码登陆
  • 创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
  • 欢迎大家关注民工哥个人微信公众号
  • 我这样减少了26.5M Java内存!
  • JAVA 命令行参数解析,org.apache.commons.cli的使用
  • 几款网络测试工具总结
  • CentOS7 添加路由命令
  • IDEA web项目部署运行Tomcat
  • #Java异常处理
  • [译]前端离线指南(上)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Node + FFmpeg 实现Canvas动画导出视频
  • Octave 入门
  • October CMS - 快速入门 9 Images And Galleries
  • scrapy学习之路4(itemloder的使用)
  • springboot_database项目介绍
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 如何利用MongoDB打造TOP榜小程序
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 你对linux中grep命令知道多少?
  • 湖北分布式智能数据采集方法有哪些?
  • ​MySQL主从复制一致性检测
  • #WEB前端(HTML属性)
  • $refs 、$nextTic、动态组件、name的使用
  • (1)(1.11) SiK Radio v2(一)
  • (C++20) consteval立即函数
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (三) diretfbrc详解
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)c++ std::pair 与 std::make
  • (转)winform之ListView
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net 生成二级域名
  • .Net6使用WebSocket与前端进行通信
  • ?.的用法
  • @Bean注解详解
  • @Documented注解的作用
  • [ActionScript][AS3]小小笔记
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [AIGC] Redis基础命令集详细介绍
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [docker] Docker的私有仓库部署——Harbor
  • [ffmpeg] aac 音频编码
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页