iOS侧拉门代码共享

本文介绍了一个名为XFSideRootViewController的iOS组件,用于实现应用内的侧滑菜单功能。文章详细展示了如何通过单例模式初始化该组件,并配置左右菜单及主视图控制器。此外,还介绍了如何设置菜单的拖动距离等自定义参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,直接告诉大家怎么用,代码在这里:点击打开链接


首先看一下这个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;
}


欢迎大家纠错,任何方面都可以,包括代码的书写规范,下面是效果



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值