iOS自定义可拖动带点击效果的悬浮按钮

原创 2018年04月17日 11:19:08

   实现方法是自定义一个UIView,在UIView上添加拖动手势(UIPanGestureRecognizer)和点击手势(UITapGestureRecognizer).

 

- (instancetype) initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer allocinitWithTarget:selfaction:@selector(handleTapGesture:)];

        [self addGestureRecognizer:tapGesture];

        

        UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer allocinitWithTarget:selfaction:@selector(handlePanGesture:)];

        [self addGestureRecognizer:panGesture];

}

    return self;

}


在handlePanGesture方法要记得添加 [send setTranslation:CGPointZero inView:self]这句代码,如果不添加,会造成在拖动的过程中,控件会不受控制甚至会消失在屏幕中


- (void)handleTapGesture:(UITapGestureRecognizer *)send

{

    [self.delegate handleViewTap:self.toastInfo.target];

}


- (void)handlePanGesture:(UIPanGestureRecognizer *)send

{

    CGPoint tanslation = [send translationInView:self];

    CGFloat centerX = send.view.center.x + tanslation.x;

    CGFloat centerY = send.view.center.y + tanslation.y;

    CGFloat thecenterY = 0;

    CGFloat thecenterX = 0;

    send.view.center = CGPointMake(centerX, centerY);

    [send setTranslation:CGPointZero inView:self];

    

    if (send.state == UIGestureRecognizerStateEnded || send.state==UIGestureRecognizerStateCancelled) {

        if (centerX > kScreenWidth/2) {

            thecenterX = kScreenWidth - 30;

        }

        else

        {

            thecenterX = 30;

        }

        

        if (centerY < (SafeAreaTopHeight + 10)) {

            thecenterY = SafeAreaTopHeight + 27.5;

        }

        else if (centerY >= (kScreenHeight-SafeAreaBottomHeight))

        {

            thecenterY = kScreenHeight - (27.5 + SafeAreaBottomHeight);

        }

        else

        {

            thecenterY = send.view.center.y+ tanslation.y;

        }

        

        [UIView animateWithDuration:0.3 animations:^{

                send.view.center = CGPointMake(thecenterX, thecenterY);

            if (thecenterY > ( kScreenHeight - (27.5 + SafeAreaBottomHeight))) {

                send.view.center = CGPointMake(thecenterX,  kScreenHeight - (27.5 +SafeAreaBottomHeight));

            }

        }];

    }

}

- (void)SetbackgroudImage:(NSString *)ImgUrl

{

    self.bgImage = [[UIImageView alloc] initWithFrame:self.bounds];

    [self.bgImage  sd_setImageWithURL:[NSURL URLWithString:ImgUrl] placeholderImage:nil options:SDWebImageRefreshCached];

    self.bgImage.contentMode = UIViewContentModeScaleAspectFit;

    [self addSubview:self.bgImage];

}

+ (SuspendView *)initView:(id<SuspendViewDelegate>)delegate withInfo:(ToastInfo *)info

{

    SuspendView *view = [[SuspendView alloc] initWithFrame:CGRectMake(kScreenWidth-55,kScreenHeight/2, 55, 55)];

    view.delegate = delegate;

    view.toastInfo = info;

    view.isShow = YES;

    [view SetbackgroudImage:info.url];

    return view;

}


iOS 悬浮可拖动可点击按钮

项目里下完单之后要悬浮红包,类似饿了吗那种。 做完了记录下: @implementation SearchResultViewController {     UIButton...
  • ZY_FlyWay
  • ZY_FlyWay
  • 2016-11-28 16:18:42
  • 1905

Android自定义可拖拽的悬浮按钮---DragFloatingActionButton

悬浮按钮FloatingActionButton是Android 5.0系统添加的新控件,FloatingActionButton是继承至ImageView,所以FloatingActionButto...
  • android_cmos
  • android_cmos
  • 2017-06-21 23:10:02
  • 1982

仿ios touch按钮创建可随意拖动的悬浮按钮

WindowManager mWindowManager; WindowManager.LayoutParams wmParams; LinearLayout mFloatLayout; ImageV...
  • liuye066
  • liuye066
  • 2017-10-12 16:35:09
  • 229

iOS悬浮在应用首页可吸附在边缘的小按钮

类似于苹果手机首页那个半透明的悬浮小按钮。
  • u012988591
  • u012988591
  • 2016-10-19 16:49:35
  • 2120

Android 可拖动的悬浮按钮

这是控件的主代码,在你的项目里面,新建一个同名的类,把代码直接复制进去就能用了。另外,这个类里面引用了工具类的一些代码。工具类在这个主类的源码下面也有贴出,直接把工具类的相关代码,复制到你自己的工具类...
  • l_o_s
  • l_o_s
  • 2017-03-01 15:01:53
  • 4727

iOS应用内部悬浮窗,可随意拖动

  • 2014年10月14日 17:32
  • 155KB
  • 下载

android 超简单的拖动按钮 悬浮按钮 吸附按钮

android 超简单的拖动按钮 悬浮按钮 吸附按钮
  • menglele1314
  • menglele1314
  • 2015-11-13 12:26:56
  • 14409

悬浮于界面可随手指移动的按钮

  • 2014年11月24日 14:53
  • 1.44MB
  • 下载

iOS自定义悬浮按钮,Objective-C可拖动的浮动按钮,iOS浮动图标,类似AssistiveTouch的浮动漂浮按钮

最近弄个小项目,又用到这效果,翻了下以前的代码来用,觉得有点意思,顺便放出来供大家参考, 好像是2015年的时候,某些大公司,如“京东”在APP的首页上弄了个漂浮的图标,当时我在的公司也立马跟着弄一...
  • envon123
  • envon123
  • 2017-09-11 16:25:05
  • 692

Android开发 自定义悬浮可拖动view

一个自定义View的悬浮按钮Lib扩展性良好,悬浮布局可是配其他布局
  • xhf_123
  • xhf_123
  • 2017-08-30 09:52:23
  • 725
收藏助手
不良信息举报
您举报文章:iOS自定义可拖动带点击效果的悬浮按钮
举报原因:
原因补充:

(最多只允许输入30个字)