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.