使用PPRevealSideViewController实现侧滑效果

国高杰
2023-12-01

使用起来还是比较简单的, 主要是几个步骤

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = PP_AUTORELEASE([[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]);
    
    // 创建抽屉的根控制器
    ViewController *main = [[ViewController alloc] init];
    main.view.backgroundColor = [UIColor whiteColor];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:main];
    
    // 创建抽屉控制器并且设置其根控制器
    self.revealSideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:nav];
    
    self.revealSideViewController.delegate = self;
    
    // 将抽屉控制器作为根控制器
    self.window.rootViewController = self.revealSideViewController;
    
    // 设置状态栏颜色
    self.revealSideViewController.fakeiOS7StatusBarColor = [UIColor orangeColor];
    
    self.window.backgroundColor = [UIColor whiteColor];
    
    return YES;
}

ViewController.m

#import "ViewController.h"
#import "PPRevealSideViewController.h"
#import "RPOneViewController.h"
#import "RPTwoTableViewController.h"

#define RPOffset 100     // 设置主控制器移动后留下的视图宽度

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithTitle:@"Left"
                                                             style:UIBarButtonItemStylePlain
                                                            target:self
                                                            action:@selector(showLeft)];
    self.navigationItem.leftBarButtonItem = left;
    
    UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithTitle:@"Right"
                                                              style:UIBarButtonItemStylePlain
                                                             target:self
                                                             action:@selector(showRight)];
    
    // 手势左右滑动屏幕
    UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(showRight)];
    [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
    [self.view addGestureRecognizer:swipeLeft];
    
    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(showLeft)];
    [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
    [self.view addGestureRecognizer:swipeRight];
    
    self.navigationItem.rightBarButtonItem = right;
}

// 显示左边抽屉
- (void)showLeft
{
    RPTwoTableViewController *c = [[RPTwoTableViewController alloc] init];
    
    // 设置主控制器移动后留下的视图宽度
    [self.revealSideViewController changeOffset:RPOffset forDirection:PPRevealSideDirectionLeft];
    
    // 显示子控制器
    [self.revealSideViewController pushViewController:c onDirection:PPRevealSideDirectionLeft withOffset:RPOffset animated:YES completion:^{
        PPRSLog(@"This is the left!");
    }];
}

// 显示右边
- (void)showRight
{
    RPOneViewController *c = [[RPOneViewController alloc] init];
    
    // 设置主控制器移动后留下的视图宽度
    [self.revealSideViewController changeOffset:RPOffset forDirection:PPRevealSideDirectionRight];
    
    // 显示子控制器
    [self.revealSideViewController pushViewController:c onDirection:PPRevealSideDirectionRight withOffset:RPOffset animated:YES completion:^{
        PPRSLog(@"This is the right!");
    }];
}

Demo:

https://github.com/RinpeChen/PPRevealSideViewControllerDemoByRinpe

转载于:https://www.cnblogs.com/Rinpe/p/5044599.html

 类似资料: