实现的效果图:

自定义MVButton,继承自UIButton.

属性声明如下:

@property (nonatomic) CGPoint beginPoint;
@property (nonatomic) BOOL    dragEnable;

//自定义button对触摸事件进行响应- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{//dragEnable = NO 则不响应动作if (!_dragEnable) {return;}UITouch *touch = [touches anyObject];//获取button的当前位置_beginPoint = [touch locationInView:self];
}

 

//拖动自定义button时响应- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{if (!_dragEnable) {return;}UITouch *touch = [touches anyObject];//获取要移动到的目标位置CGPoint nowPoint = [touch locationInView:self];    //确定目标位置与开始位置的偏移量float offsetX = nowPoint.x - _beginPoint.x;float offsetY = nowPoint.y - _beginPoint.x;//按照button的center属性移动buttonself.center = CGPointMake(self.center.x + offsetX, self.center.y + offsetY);
}

 

在ViewController.m中实现的代码如下:

首先导入自定义的button:

#import "MVButton.h"

具体实现:

- (void)viewDidLoad
{[super viewDidLoad];MVButton *mvButton = [[MVButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];mvButton.backgroundColor = [UIColor yellowColor];mvButton.dragEnable = YES;[self.view addSubview:mvButton];
}

  

转载于:https://www.cnblogs.com/wjq-Law/p/4132867.html

自定义实现moveable button相关推荐

  1. 自定义leftBarButtonItem的button

    self.navigationItem.title=@"经销商查询"; UIButton * button = [UIButton buttonWithType:UIButtonT ...

  2. android button自定义样式详解,Android自定义格式显示Button的布局思路

    先把来源贴上 http://www.dibbus.com/2011/02/gradient-buttons-for-android/ 然后再让大家看看效果,这些都是xml布局文件实现的,一张图片都未曾 ...

  3. IOS开发之自定义Button(集成三种回调模式)

    前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调 ...

  4. 自定义的html radio button的样式

    设计要求效果如下: 平时看到的radio button效果如下: 可以看出设计上图的radio button选中和没有选中的状态都有自定义的图片样式.但是我们使用radio button基本上都是需要 ...

  5. C#,桌面编程入门(01)——按钮Button属性与事件、动态创建、快捷键、控件数组及自定义Button

    本文是<桌面编程入门>系列文章的开山之篇. <桌面编程入门>系列文章主要介绍桌面编程的各种组件,Button,ComboBox,Panel,WebBrowser...... 类 ...

  6. 自定义Button形状(圆形、椭圆) shape

    2011-09-19 08:36  30147人阅读  评论(0)  收藏  举报 转自:http://blog.csdn.net/xyylchq/article/details/6788761 圆形 ...

  7. 自定义Button实现百分比宽度

    自定义Button实现百分比宽度 大家都知道,在平常写布局的时候,有时候并不能确定Button的宽度.有时候会很难办,那时候想,如果能给这个Button设置屏幕的百分比就好了.下面我就带大家以Butt ...

  8. Android自定义ListView的Item无法响应OnItemClick的解决办法

    转: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就 ...

  9. 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点

    今天发现一个问题.listView的item点击以后进入到下一个页面,下个页面有个返回按钮,直接返回回去以后点击事件不能触发,滑动或者重新打开这个listView,就可以达到原来的效果.后来发现是因为 ...

最新文章

  1. Vue生命周期函数详解
  2. android获取未安装APK签名信息及MD5指纹
  3. php添加gd扩展,centos下为php添加gd扩展
  4. 基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?
  5. 阿里云PolarDB论文入选数据库顶会SIGMOD2021 最新一代架构领先世界
  6. 解决 Cmder 的光标跟文字有个间距 及常用配置
  7. 7-49 打印学生选课清单 (25 分)(思路+详解+map做法(一对多)+超时解决)Come baby!
  8. 我们处理了10亿个Java记录的错误-这是导致97%的错误的原因
  9. Java文件类字符串getAbsolutePath()方法(带示例)
  10. Shadow DOM的理解
  11. CrtmpServer 接收推送视频流 注册流基本流程
  12. 初窥Python(一)——使用pymongo连接MongoDB
  13. 学java用什么编译器_学习Java用什么编译软件好
  14. 因果推断-Uplift Model:Meta Learning
  15. 计算机连接不上蓝牙鼠标,蓝牙鼠标连接不上的解决方案
  16. QQ机器人{应用设计篇}
  17. 微信朋友圈点赞测试点【杭州多测师】【杭州多测师_王sir】
  18. OPENCV学习笔记 - SIFT 尺度不变特征变换 Python
  19. 【陈工笔记】# 同步网络和异步网络的理解 #
  20. 【Numpy学习笔记1】numpy安装、维度、基本运算、改变数据形态

热门文章

  1. vue 传递多行数据_vue父组件向子组件传递多个数据的实例
  2. 5gnr帧结构特点有哪些_真空离子束刻蚀设备的结构特点有哪些
  3. html页面加载完成后会触发的事件_前端隐秘角落 - 页面渲染
  4. 如何把svn代码拉下来,Maven - 从SVN拉取代码
  5. windows服务器系统免登录,Mac系统登录Windows服务器
  6. python3解释器执行not 1 and 1_编程语言的分类,python解释器多版本共存.执行python的两种方式,变量,用户与程序交互...
  7. js text 和 html,JS DOM innerText和textContent的区别
  8. mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
  9. NS3官方参考资料manual和tutorial
  10. 工业级光纤收发器入网说明