需求
实现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
网友评论