美文网首页
QQ粘性效果

QQ粘性效果

作者: SoManyDumb | 来源:发表于2016-08-24 22:17 被阅读25次

QQ粘性效果

实现思路:

1.自定义大圆控件(UIButton)可以显示背景图片,和文字

2.让大圆控件随着手指移动而移动

  • 注意不能根据形变修改大圆的位置,只能通过center,因为全程都需要用到中心点计算。

3.在拖动的时候,添加一个小圆控件在原来大圆控件的位置

  • 注意这个小圆控件并不会随着手指移动而移动,因此应该添加到父控件上
  • 一开始设置中心点和尺寸和大圆控件一样。
  • 随着大圆拖动,小圆半径不断减少,可以根据两个圆心的距离,随便生成一段比例,随着圆心距离增加,圆心半径不断减少。
        // 计算小圆半径:随机搞个比例,随着圆心距离增加,圆心半径不断减少。
        CGFloat smallRadius = _circleR2 - d / 10;
  • 每次小圆改变,需要重新设置小圆的尺寸和圆角半径。

4.粘性效果

  • 就是在两圆之间绘制一个形变矩形,描述形变矩形路径。
  • 这里大致介绍下计算思路,不需要太纠结
  • 这里需要用到CAShapeLayer,可以根据一个路径,生成一个图层,展示出来。把形变图层添加到父控件并且显示在小圆图层下就OK了。因为所有计算出来的点,都是基于父控件。
  • 注意:这里不能用绘图,因为绘图内容只要超过当前控件尺寸就不会显示,但是当前形变矩形必须显示在控件之外

5.粘性业务逻辑处理

  • 当圆心距离超过100,就不需要描述形变矩形(并且把之前的形变矩形移除父层),小圆也需要隐藏。

  • 没有超过100,则相反。

6.手指停止拖动业务逻辑

  • 判断下圆心是否超过100,超过就播放爆炸效果,添加个UIImageView在当前控件上,并且需要取消控制器view的自动布局。
    // 取消Autoresizing转自动布局
    self.view.translatesAutoresizingMaskIntoConstraints = NO;

  • 没有超过,就还原。

相关文章

  • QQ粘性效果

    效果:拖动信息提示数目按钮,感觉像是在拉伸按钮,当拖动到一定范围,按钮(小圆被抽出),松开手小圆会爆炸。如果抽出小...

  • QQ粘性效果

  • QQ粘性效果

    QQ粘性效果 实现思路: 1.自定义大圆控件(UIButton)可以显示背景图片,和文字 2.让大圆控件随着手指移...

  • QQ粘性效果

    动画分析 当前控件既可以显示图片,有可以显示文字,那么我们就可以通过按钮来最为当前的控件. 当拖动控件,当前控件尺...

  • QQ粘性效果的实现

    制作步骤 1.自定义按钮控件 设置背景颜色,设置layer的cornerRadius属性,添加手势,重写setHi...

  • QQ粘性布局

    在一个storyBoard里面拖一个UIButton进去,然后新建一个自定义UIBUtton类

  • QQ粘性布局

    按钮button自定义button设置圆角半径cornerRadius取消高亮状态重写setHighlighted...

  • QQ粘性布局

    整体思路: 手指移动,按钮跟着移动.按钮跟着手指移动.移动时底部有一个圆, 根据上面的大圆按钮拖动的距离,小圆的半...

  • QQ粘性布局

    #import @interfaceBageValueButton :UIButton @end #import ...

  • 【原创】也仿QQ未读消息气泡拖拽黏连效果

    一、先看效果 二、分析 昨天写了贝塞尔的动画效果,非常好玩。今天突然想到qq的消息气泡,点击拖拽有粘性,也能用贝塞...

网友评论

      本文标题:QQ粘性效果

      本文链接:https://www.haomeiwen.com/subject/tkmosttx.html