WMDragView 开源项目教程
1、项目介绍
WMDragView 是一个开源的 iOS 库,旨在让任意 View 都可以自由悬浮拖曳,类似于 iOS 的 AssistiveTouch 效果和微信浮窗功能。该项目提供了一个轻量级的控件,支持自定义 View 的拖动、悬浮、拖曳,并且可以设置拖动的范围、回调事件以及黏贴边缘的动画效果。
2、项目快速启动
安装
首先,通过 CocoaPods 安装 WMDragView:
pod 'WMDragView'
然后在你的项目中运行 pod install。
使用
-
继承 WMDragView: 将需要拖曳的 View 的父类从原本继承
UIView改成继承WMDragView。#import "WMDragView.h" @interface MyCustomView : WMDragView @end -
设置拖动属性: 在
MyCustomView的实现文件中设置拖动属性。@implementation MyCustomView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.dragEnable = YES; // 允许拖动 self.freeRect = self.superview.bounds; // 设置拖动范围 self.isKeepBounds = YES; // 自动黏贴边界 } return self; } @end -
添加回调: 设置拖动和点击的回调。
self.clickDragViewBlock = ^{ NSLog(@"View clicked!"); }; self.beginDragBlock = ^{ NSLog(@"Dragging started!"); }; self.duringDragBlock = ^{ NSLog(@"Dragging in progress!"); }; self.endDragBlock = ^{ NSLog(@"Dragging ended!"); };
3、应用案例和最佳实践
应用场景1:悬浮按钮
在应用中添加一个悬浮按钮,用户可以自由拖动该按钮到屏幕的任意位置,类似于 iOS 的 AssistiveTouch 功能。
WMDragView *dragView = [[WMDragView alloc] initWithFrame:CGRectMake(100, 100, 50, 50)];
dragView.backgroundColor = [UIColor blueColor];
dragView.dragEnable = YES;
dragView.isKeepBounds = YES;
[self.view addSubview:dragView];
应用场景2:微信浮窗
实现类似于微信浮窗的功能,用户可以将某个 View 拖动到屏幕边缘,形成一个浮窗效果。
WMDragView *floatingView = [[WMDragView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
floatingView.backgroundColor = [UIColor redColor];
floatingView.dragEnable = YES;
floatingView.isKeepBounds = YES;
[self.view addSubview:floatingView];
4、典型生态项目
WMDragView 作为一个轻量级的控件,可以与其他 iOS 开源项目结合使用,例如:
- Masonry:用于自动布局,可以与 WMDragView 结合使用,实现更灵活的布局效果。
- SDWebImage:用于加载网络图片,可以与 WMDragView 结合使用,实现带有网络图片的悬浮按钮。
- ReactiveCocoa:用于响应式编程,可以与 WMDragView 结合使用,实现更复杂的交互逻辑。
通过这些生态项目的结合,可以进一步扩展 WMDragView 的功能,满足更多复杂的应用场景需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



