开源框架IIViewDeck使用

潘佐
2023-12-01

IIViewDeck在github上的地址https://github.com/Inferis/ViewDeck

IIViewDeck实现的是可以有侧边的多个控制起之间的滑动效果,在他的github上面有较为详细的说明

这里也是展示一下怎样简单的使用这个框架.

以- (id)initWithCenterViewController:(UIViewController*)centerController leftViewController:(UIViewController*)leftController rightViewController:(UIViewController*)rightController;这个初始化方法为例.

他可以同时拥有左右两个侧滑的界面.

而且只要我们在控制器中引入了#import "IIViewDeckController.h"

那么我们的控制器就会有

self.viewDeckController
当控制器是centerController,leftController,rightController中的或者是其子控制器的时候,这个只就会有值.(否则为nil)


下面我自己弄一个例子:

把IIViewDeck作为根控制器

    IIViewDeckController *ViewDeck=[[IIViewDeckController alloc] initWithCenterViewController:navigation leftViewController:leftVC rightViewController:rightVC];
    ViewDeck.panningMode=IIViewDeckNavigationBarPanning;
    ViewDeck.centerhiddenInteractivity=IIViewDeckCenterHiddenUserInteractive;
    ViewDeck.bounceDurationFactor=1;
    ViewDeck.bounceOpenSideDurationFactor=1;
    ViewDeck.leftSize=200;
    ViewDeck.rightSize=200;
    self.window.rootViewController=ViewDeck;

中间的控制器是一个自定义的naviagtionController,两边是viewcontroller

navigation就是要接受两边传递过来的点击信息,对根控制器进行调整

然后写几个位于navigation下的子控制器(用于在左界面上选择的时候切换),设置他们leftitem和rightitem使他们呢可以接受相应事件

-(void)setNavigationBar
{
    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(goLeft)];
    self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(goright)];
}


然后在通过

-(void)goLeft
{
    if ([self.viewDeckController isSideOpen:IIViewDeckLeftSide]) {
        [self.viewDeckController closeLeftView];
    }else{
        [self.viewDeckController openLeftView];
    }
}
-(void)goright
{
    if ([self.viewDeckController isSideOpen:IIViewDeckRightSide]) {
        [self.viewDeckController closeRightView];
    }else{
        [self.viewDeckController openRightView];
    }
}

这样就能打开侧边的视图了.

侧边的试图我们要设置一个代理

@protocol leftDelegate <NSObject>

-(void)chooseFinish:(int)index;

@end
代理的对象是我们自定义的navigation

也就是说当我们选择了侧边的一个按钮的时候,他就会退出侧边并通知我们的navigation我们选择的是哪一个,然后navigation就可以改变自己的视图了.


其中用到的一些方法和属性的说明:

定义侧边的宏:

enum {
    IIViewDeckLeftSide = 1,
    IIViewDeckRightSide = 2,
    IIViewDeckTopSide = 3,
    IIViewDeckBottomSide = 4,
};
typedef UInt32 IIViewDeckSide;

判断某一个侧边是否打开了

- (BOOL)isSideClosed:(IIViewDeckSide)viewDeckSide;
- (BOOL)isSideOpen:(IIViewDeckSide)viewDeckSide;
- (BOOL)isAnySideOpen;


开/关左右控制器

- (BOOL)toggleLeftView;
- (BOOL)openLeftView;
- (BOOL)closeLeftView;

- (BOOL)toggleRightView;
- (BOOL)openRightView;
- (BOOL)closeRightView;



@property (nonatomic, assign) IIViewDeckPanningMode panningMode;//panning模式
@property (nonatomic, assign) IIViewDeckCenterHiddenInteractivity centerhiddenInteractivity;//可以控制中间控制器的用户交互(当处于点开状态的时候)

@property (nonatomic, assign) CGFloat leftSize;//控制展露出来的面积
@property (nonatomic, assign) CGFloat rightSize;


如果需要更详细的控制,可以看github上的英文介绍.

主要是了解一下IIViewDeck.



 类似资料: