#import <UIKit/UIKit.h>


@interface weixinControl : UIControl

-(weixinControl *)initWithFram:(CGRect)rect;

@end


#import "weixinControl.h"


@implementation weixinControl

{

CGRect _rect; //记录self.frame的大小

UIView *_frontView; //用来显示主要内容

CGPoint _originPoint; //记录开始touch时的position

CGPoint _currentPoint;//记录当前位置

CGRect _frontViewOriginRect;//记录frontVie的初始fram

CGFloat _offsetXPosition; //记录x的位移量

UIButton *_delBtn; //删除按钮

}

-(weixinControl *)initWithFram:(CGRect)rect

{

if (self = [super initWithFrame:rect]) {

self.backgroundColor = [UIColor cyanColor];

_rect = rect;

_offsetXPosition = 0.0f;

[self makeDeletButton];

[self makeFrontView];

}

return self;

}


-(void)makeDeletButton

{

_delBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

_delBtn.frame = CGRectMake(_rect.size.width - 50, 0, 50, _rect.size.height);

[_delBtn setTitle:@"删除" forState:UIControlStateNormal];

_delBtn.backgroundColor = [UIColor redColor];

[self addSubview:_delBtn];

}


-(void)makeFrontView

{

_frontView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, _rect.size.width, _rect.size.height)];

_frontViewOriginRect = _frontView.frame;

_frontView.backgroundColor = [UIColor blueColor];

[self addSubview:_frontView];

}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

UITouch *beganTouch = [touches anyObject];

_originPoint = [beganTouch locationInView:self];

}


-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

if (_offsetXPosition < (0 - _delBtn.frame.size.width)) {

_frontView.frame = CGRectMake((0 -_delBtn.frame.size.width), _frontViewOriginRect.origin.y, _frontViewOriginRect.size.width, _frontViewOriginRect.size.height);

}

else

{

_frontView.frame = _frontViewOriginRect;

}

}


-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

UITouch *moveTouch = [touches anyObject];

_currentPoint = [moveTouch locationInView:self];

_offsetXPosition = _currentPoint.x - _originPoint.x;

if (_offsetXPosition >= 0) {

return;

}

_frontView.frame = CGRectMake(_offsetXPosition, _frontViewOriginRect.origin.y, _frontViewOriginRect.size.width, _frontViewOriginRect.size.height);

}

@end