(三) 自己动手写代码之PZMovableFlowButton

需求

实现iPhone上的AssistiveTouch一样的自动吸附效果。

效果图

(图看不到可以点这里)
我外链个gif还自动上传过来,然后显示不出来,真是坑爹!

效果图

do yourself

看完效果图,有兴趣自己做一个吧,也不是很难。

思路

主要就是位置的确定,以及UIPanGestureRecognizer的使用,根据当前button的不同位置,来确定应该被吸附到哪一侧。

接口


#define kPZMovableFlowPadding 1                //默认1 pt边距
#define kPZMovableFlowAdsorptionDistance   100    //上下吸附距离
@class PZMoveableFlowButton;
/**
 *  浮动按钮回调Block
 */
typedef void (^ClickedHandler)(PZMoveableFlowButton * btn);
@interface PZMoveableFlowButton : UIView
/**
 *  创建浮动按钮
 *
 *  @param frame          设置浮动按钮的位置及大小
 *  @param boundary       设置浮动按钮的可活动边界,父视图坐标系为基准
 *  @param superView      父视图,在哪个视图上移动
 *  @param contentImage   按钮的内容图片
 *  @param clickedHandler 点击事件回调
 *
 *  @return 初始化,返回CTHotelMovableFlowButton实例
 */
- (instancetype)initWithFrame:(CGRect)frame
                  AndBoundary:(CGRect)boundary
                       onView:(UIView *)superView
                 contentImage:(UIImage *)contentImage
               clickedHandler:(ClickedHandler)clickedHandler;
/**
 *  移除PZMovableFlowButton
 */
- (void)dismiss;

/**
 *  浮动按钮的当前位置,取的self.center
 */
@property (nonatomic, assign, readonly) CGPoint currentLocation;
@end

代码地址

github地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,273评论 25 709
  • 目录 上一章 文/香啡豆 “琦琦,琦琦,快起来。”张晓舒敲着姜琦的门,今天要开始上班了,对于实习,张晓舒还是有些紧...
    香啡豆阅读 3,222评论 0 2
  • 今天打开奥鹏教育平台,听了几节视频课,丰富了自己的知识,也加深了对教师这一职业起源与地位的认识。可以说,真是天下没...
    黄河故道边的一个教书匠阅读 1,300评论 0 0
  • 首先感谢一下医生,若是没有你催命般的催稿,还真就没有这篇了。作为催我的代价,请客可乐是没跑的了:) 首先,给出章鱼...
    何晓杰Dev阅读 3,860评论 0 2
  • 台湾的春假里,学校组织了大陆学生台中三日游。 不敢说去了多少地方, 但至少还算是走完了台湾部分的地标性景点。 以下...
    大Yi巴狐狐阅读 2,823评论 0 2