Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS 悬浮可拖动可点击按钮

iOS 悬浮可拖动可点击按钮

作者头像
星宇大前端
发布于 2019-01-15 03:16:50
发布于 2019-01-15 03:16:50
2.5K0
举报
文章被收录于专栏:大宇笔记大宇笔记

项目里下完单之后要悬浮红包,类似饿了吗那种。

做完了记录下:

@implementation SearchResultViewController

{

UIButton  * moveRedPacket;

}

#pragma mark 红包

//创建移动红包的UI

-(void)CreatMoveRedPacketUI{

UIPanGestureRecognizer   *  panTouch    =   [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];

if (moveRedPacket==nil) {

moveRedPacket =   [[UIButton alloc]initWithFrame:CGRectMake(ScreenWidth-120, ScreenHeight-120, 80, 85)];

    }

    [moveRedPacket setBackgroundImage:[UIImage imageNamed:@"red"] forState:UIControlStateNormal];

    [moveRedPacket addTarget:self action:@selector(ClickRedPacket:) forControlEvents:UIControlEventTouchUpInside];

    [moveRedPacket addGestureRecognizer:panTouch];

    [self.view addSubview:moveRedPacket];

}

/**

 *  处理拖动手势

 *

 *  @param recognizer 拖动手势识别器对象实例

 */

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {

//视图前置操作

    [recognizer.view.superview bringSubviewToFront:recognizer.view];

CGPoint center = recognizer.view.center;

CGFloat cornerRadius = recognizer.view.frame.size.width / 2;

CGPoint translation = [recognizer translationInView:self.view];

//NSLog(@"%@", NSStringFromCGPoint(translation));

    recognizer.view.center = CGPointMake(center.x + translation.x, center.y + translation.y);

    [recognizer setTranslation:CGPointZero inView:self.view];

if (recognizer.state == UIGestureRecognizerStateEnded) {

//计算速度向量的长度,当他小于200时,滑行会很短

CGPoint velocity = [recognizer velocityInView:self.view];

CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y));

CGFloat slideMult = magnitude / 200;

//NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); //e.g. 397.973175, slideMult: 1.989866

//基于速度和速度因素计算一个终点

float slideFactor = 0.1 * slideMult;

CGPoint finalPoint = CGPointMake(center.x + (velocity.x * slideFactor),

                                         center.y + (velocity.y * slideFactor));

//限制最小[cornerRadius]和最大边界值[self.view.bounds.size.width - cornerRadius],以免拖动出屏幕界限

        finalPoint.x = MIN(MAX(finalPoint.x, cornerRadius),

self.view.bounds.size.width - cornerRadius);

        finalPoint.y = MIN(MAX(finalPoint.y, cornerRadius),

self.view.bounds.size.height - cornerRadius);

//使用 UIView 动画使 view 滑行到终点

        [UIView animateWithDuration:slideFactor*2

delay:0

options:UIViewAnimationOptionCurveEaseOut

animations:^{

                             recognizer.view.center = finalPoint;

                         }

completion:nil];

    }

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年11月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【IOS开发进阶系列】手势专题
        iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式:
江中散人_Jun
2023/10/16
5190
【IOS开发进阶系列】手势专题
iOS 惯性滑动效果
最近公司SDK新搞了个功能,手势滑动地图后,要具备惯性滑动效果的功能。安卓是先做出来了,然后给我看,由于我早体验过某鸟地图,某鸟地图也有这种效果,加上安卓做得确实不错,还在忙着研究OpenGL的我也只
清墨
2018/05/07
3.3K0
iOS 惯性滑动效果
iOS手势与变形
手势在用户交互中有着举足轻重的作用,这篇文字简单的介绍了iOS中的手势,并通过手势对控件进行变形处理。若有错误,或不同的见解,请指正! 手势 ---- iOS手势分为下面这几种: UITapGestureRecognizer(点按) UIPanGestureRecognizer(拖动) UIScreenEdgePanGestureRecognizer (边缘拖动) UIPinchGestureRecognizer(捏合) UIRotationGestureRecognizer(旋转) UILongPr
BY
2018/05/11
1.9K0
UIKit Dynamics:抛出视图 —《Graphics & Animation系列三》
翻译自raywenderlich网站iOS教程Graphics & Animation系列
Charlie_W
2018/10/19
1.1K0
UIKit Dynamics:抛出视图 —《Graphics & Animation系列三》
创建一个可任意拖放的控件
想了下可以用UIButton, button设置要显示的图片, 然后通过UIPanGestureRecognizer来实现调整位置
周希
2019/10/15
3870
iOS_系统自带地图圆形区域选择范围
5.聚集操作:删除原理的大头针,在新经纬度添加大头针,并将地图移动到新的经纬度(反地理编码获得位置信息)
mikimo
2022/07/20
2.2K0
iOS_系统自带地图圆形区域选择范围
UIkit Dynamics 投掷效果
前言:上章UIKit Dynamics 置身真实世界介绍了基本用法,下面我们继续深入学习——手势跟Dynamics结合的用法 一、触摸处理 1、在ViewController.swift添加以下属性,并在Main.storyboard结合这些属性,在Main.storyboard添加一个imageView,以及扮演redSquare,blueSquare的俩个view @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var
Dwyane
2018/05/22
1.2K0
iOS WKWebView+UITableView混排
WKWebView+UITableView混排 做内容展示页的时候,经常会用到WKWebView+UITableView的混排功能,现在此做一个总结,该功能的实现我采用了四种方法。 方案1: webView作为tableView的Header, 撑开webView,显示渲染全部内容,当内容过多时,比如大量高清图片时,容易造成内存暴涨(不建议使用),此方案简单粗暴 , 仅适用于内容少的场景,具体实现不在此赘述,直接看代码。 方案2: 简书的内容页实现方案 : UIWebView与UITableV
且行且珍惜_iOS
2020/06/09
1.7K0
iOS  WKWebView+UITableView混排
iOS 小技能:响应者链的事件传递过程、手势识别器的使用步骤、抽屉效果的实现
为了完成手势识别,必须借助于手势识别器UIGestureRecognizer。利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势。
公众号iOS逆向
2022/08/22
9030
iOS 小技能:响应者链的事件传递过程、手势识别器的使用步骤、抽屉效果的实现
IOS5开发-控件位置适应屏幕旋转代码
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toOrientation                                  duration:(NSTimeInterval)duration {     if (toOrientation == UIInterfaceOrientationLandscapeLeft ||         toOrientation == UIInterfaceOrientat
阿新
2018/04/12
1.4K0
iOS中手势的应用1. 四类事件的主要方法2. 响应者链3. 手势识别功能(Gesture Recognizer)4. 手势的使用
iOS设备现如今大受欢迎的最重要原因之一就在于其开创了触控操作的潮流。发展到现在,无论是Android还是iPhone,现在APP与用户进行交互,基本上都是依赖于各种各样的触控事件。例如用户对屏幕进行了侧滑,APP就需要对这个手势进行相应的处理,给用户一个反馈。这些相应的事件就都是在UIResponder中定义的。 广告插播的措不及防:如果您要是觉得这篇文章让您有点收获,随手点个赞会让俺兴奋好久吶。 UIResponder大体有四类事件:触摸、加速计、远程控制、按压(iOS9.0以后出来的,3DTou
stanbai
2018/06/28
2.3K0
【iOS学习】——手势识别
iOS 手势 1.如果一个控件继承于 UIControl,那么它将不需要手势 2.所有控件都可以添加手势 [控件 addGestureRecognizer: ] 3.iOS 系统提供的手势有哪些 UITapGestureRecognizer 点击 UISwipeGestureRecognizer 轻扫 UIPanGestureRecognizer 拖动 UIRotationGestureRecognizer 旋转 UIPinchGe
LeeCen
2018/10/11
1.4K0
【iOS学习】——手势识别
iOS简易抽屉效果
直接在controller里面加代码实现的抽屉效果 @interface ViewController () { UIView* _leftView; } @end @implementation ViewController (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _leftView = [[UIVie
用户8671053
2021/10/29
8730
UIGestureRecognizer  手势识别一、概念介绍二、UIView 的分类三、UIGestureRecognizer 抽象类四、UIGestureRecognizerDelegate 代理
一、概念介绍 UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(轻触,点按) UILongPressGestureRecognizer(长按) UISwipeGestureRecognizer(轻扫手势) UIRotationGestureRecognizer(旋转手势) UIPanGestureRecognizer(拖拽手势) UIPinchGestureRecognizer(捏合手势,缩
用户2141756
2018/05/18
3.2K0
iOS-UIScrollerView
xy_ss
2023/11/22
1800
iOS-UIScrollerView
Quartz2D复习(二) --- 手势解锁
这次支付宝手机客户端升级,把手势解锁那个功能去掉了,引起很多人的抱怨,觉得少了手势解锁的保护,个人信息容易泄漏了。。。
tandaxia
2018/09/27
4960
Quartz2D复习(二) ---  手势解锁
iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用
        在iOS系统中,手势是进行用户交互的重要方式,通过UIGestureRecognizer类,我们可以轻松的创建出各种手势应用于app中。关于UIGestureRecognizer类,是对iOS中的事件传递机制面向应用的封装,将手势消息的传递抽象为了对象。有关消息传递的一些讨论,在前面的博客中有提到:
珲少
2018/08/15
2K0
iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用
iOS-可交互滑动的TabBarController
1.先看一下效果 左右滑动交互的TabBarController 2.在iOS7.0以前,要实现这样的效果,只有自定义TabBar了,但这很麻烦。而在iOS7.0以后,苹果在UITabBarContr
用户2215591
2018/06/29
1.8K0
贝塞尔曲线之爱琴海 -- 定不负相思意
前言: 一个人有多不正经,就有多深情。一个程序员有多闷,就代表ta有多骚。 我不等山无棱,不等夏雨雪,不等天地合。因为即使江水为竭,即使冬雷震震,我都在你一个转身就能触碰的距离。 (纯小白教程。七夕福利哦~) 一、绘制蓝色海洋背景 从动图中可以看出这片背景呈渐变色,自然我们可以想到用CAGradientLayer类来创建渐变图层。这块代码值得一提的地方在于设置颜色,CAGradientLayer的colors属性是一个数组,里面可以用于存放不同的颜色。在本案例中,采用的是C语言库的颜色,因此需要
谦谦君子修罗刀
2018/05/02
8740
贝塞尔曲线之爱琴海 -- 定不负相思意
Quartz2D复习(四) --- 图层CALayer和动画CAAnimation
1)、在ios中,能看得见摸得着的东西基本上都是UIView, 比如按钮、文本标签、文本输入框、图标等,这些都是UIView
tandaxia
2018/09/27
1.5K0
Quartz2D复习(四) --- 图层CALayer和动画CAAnimation
推荐阅读
相关推荐
【IOS开发进阶系列】手势专题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文