话不多说,直接告诉大家怎么用,代码在这里:点击打开链接
首先看一下这个XFSideRootViewController里面的属性
//拖动方向导致的菜单显示
typedef NS_ENUM(NSInteger , XFDirectionShowMenuType) {
XFDirectionShowMenuTypeLeft = 0, //左菜单
XFDirectionShowMenuTypeRight, //右菜单
XFDirectionShowMenuTypeNone, //没有开启任何菜单,意味着关闭状态
};
//自定义左右拖动距离的结构体
struct XFDistance{
CGFloat left;
CGFloat right;
};
typedef struct XFDistance XFDistance;
@interface XFSideRootViewController : UIViewController
/*
给XFDistance 类型的属性去赋值的时候,请使用下面定义的方法去赋值,模仿系统的结构体方法。可能会不提示,复制一下就好
*/
/** 左右菜单的拖动距离,如有需要,请优先设置该属性 (默认150)*/
@property(nonatomic,assign)XFDistance distance;
/** 左菜单 */
@property(nonatomic,strong)UIViewController* leftViewController;
/** 主视图 */
@property(nonatomic,strong)UIViewController* mainViewController;
/** 右菜单 */
@property(nonatomic,strong)UIViewController* rightViewController;
/** 左右拖动事件的响应范围(默认100) */
@property(nonatomic,assign)XFDistance panDistance;
/** 现在菜单的状态 */
@property(nonatomic,assign,readonly)XFDirectionShowMenuType type;
//创建自定义结构体的方法
XFDistance XFDistanceMake(CGFloat left,CGFloat right);
/**
* 单例,推荐使用单例创建对象
*/
+ (instancetype)singletonController;
/**
* 开启左菜单
*/
- (void)openLeftMenu;
/**
* 开启右菜单
*/
- (void)openRightMenu;
/**
* 关闭所有菜单
*/
- (void)close;
1.创建的时候用单例去创建,因为之后获取属性的时候比较方便
2.设置的左右控制器,我都没有对view进行大小限定,所以在左右视图里面创建其他视图的时候,请用distance属性去做限定宽度
3.XFDistance XFDistanceMake(CGFloat left,CGFloat right);这是模仿系统的C方法,对我自定义的XFDistance结构体进行赋值
继续看一下AppDelegate里面的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
//在这里创建了侧拉门的管理控制器
XFSideRootViewController* side = [XFSideRootViewController singletonController];
//设置左视图、右视图以及显示的主视图(除了主视图之外,有就设置,没有就不设置。)
side.leftViewController = [XFLeftViewController new];
side.mainViewController = [[UINavigationController alloc] initWithRootViewController:[MainViewController new]];
side.rightViewController = [XFRightViewController new];
self.window.rootViewController = side;
[self.window makeKeyAndVisible];
return YES;
}
欢迎大家纠错,任何方面都可以,包括代码的书写规范,下面是效果