温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用uitouch简单的实现了微信cell效果

发布时间:2020-08-04 22:26:05 阅读:526 作者:hxF2168799 栏目:移动开发
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

#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

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×