需求
實現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