类似AssistiveTouch可移动UIButton(UITouch用法)
2016-06-07 10:21
453 查看
Button可随着手指移动,松开后根据位置判断自动依附在左右侧
// // MoveButton.h // #import <UIKit/UIKit.h> @interface MoveButton : UIButton { CGPoint beginPoint; } @property (nonatomic) BOOL dragEnable; @end
// // MoveButton.m // #import "MoveButton.h" @implementation MoveButton - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { } return self; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { if (!_dragEnable) { return; } UITouch *touch = [touches anyObject]; beginPoint = [touch locationInView:self]; } - (void)touchesMoved:(NSSet<UITouch *> *)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.y; self.center = CGPointMake(self.center.x + offsetX, self.center.y + offsetY); if (self.center.y < self.frame.size.height/2) { self.center = CGPointMake(self.center.x, self.frame.size.height/2) ; }else if(self.center.y > SCREEN_HEIGHT - self.frame.size.height/2) { self.center = CGPointMake(self.center.x, SCREEN_HEIGHT - self.frame.size.height/2); } } - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { CGRect rect = self.frame; [UIView animateWithDuration:0.5 animations:^{ if (self.center.x <= SCREEN_WIDTH/2) { self.center = CGPointMake(rect.size.width/2,self.center.y ); }else { self.center = CGPointMake(SCREEN_WIDTH - rect.size.width/2,self.center.y); } }]; }
dbe2 //在需要的类中引入MoveButton MoveButton *testButton =[[MoveButton alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-66*UIRate, 260*UIRate+64, 70.5*UIRate, 48*UIRate)]; testButton.dragEnable = YES; [testButton setBackgroundImage:[UIImage imageNamed:@"security"] forState:UIControlStateNormal]; [testButton addTarget:self action:@selector(forwardToSafe) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:testButton]; //添加完后,UIButton有肯能无法点击,加上单指点击事件即可 UITapGestureRecognizer *aTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(forwardToSafe)]; aTap.numberOfTapsRequired = 1; [testButton addGestureRecognizer:aTap];
相关文章推荐
- 图片上传是出现Error setting expression 'upload' with value '
- hdu 1711 Number Sequence KMP模板题
- pip安装matplotlib报错:equired packages can not be built
- iOS UIImageView Gif 动画
- easyui之form表单提交
- 一个完整的ant build.xml
- AQS(AbstractQueuedSynchronizer)源码分析
- [ZooKeeper]Queues机制活动图
- CSRF verification failed. Request aborted.
- 【配置属性】—Entity Framework实例详解(DataAnnotations and Fluent API)
- hdoj-2152-Fruit
- Fuel编译
- Handler机制
- 第七次课的总结与思考
- [Android] 如何在 Fragment 中使用 runOnUiThread() 方法
- Range Sum Query - Immutable
- 解决easyui datagrid getCheck获取不到初始化的checked行比较懒的办法
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or new
- soapUI工具使用
- 22.UITextView