From 925df537e5d641378e85f3a4ee49294695ed0188 Mon Sep 17 00:00:00 2001 From: apparition Date: Sun, 1 Nov 2015 15:44:40 -0800 Subject: [PATCH 1/4] Add storyboard IB support --- .../PaperFold/PaperFoldNavigationController.h | 3 ++ .../PaperFold/PaperFoldNavigationController.m | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.h b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.h index 06c94e0..42c95d4 100644 --- a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.h +++ b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.h @@ -10,6 +10,9 @@ #import "PaperFoldView.h" @interface PaperFoldNavigationController : UIViewController +@property (nonatomic, copy, readonly) NSString *rootViewControllerID, *leftViewControllerID, *rightViewControllerID; +@property (nonatomic, copy, readonly) NSNumber *leftViewWidth; +@property (nonatomic, copy, readonly) NSNumber *rightViewWidth, *rightViewFoldCount, *rightViewPullFactor; @property (nonatomic, strong) UIViewController *rootViewController, *leftViewController, *rightViewController; @property (nonatomic, strong) PaperFoldView *paperFoldView; - (id)initWithRootViewController:(UIViewController*)rootViewController; diff --git a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m index bf4d010..8d9c5d7 100644 --- a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m +++ b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m @@ -14,6 +14,36 @@ @interface PaperFoldNavigationController () @implementation PaperFoldNavigationController +- (void)awakeFromNib { + [super awakeFromNib]; + + if (self.rootViewControllerID) { + self.rootViewController = [self.storyboard instantiateViewControllerWithIdentifier:self.rootViewControllerID]; + [self initWithRootViewController:self.rootViewController]; + } + if (self.leftViewControllerID) { + int leftWidth = 150; + + if (self.leftViewWidth) leftWidth = (int)self.leftViewWidth; + + self.leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:self.leftViewControllerID]; + [self setLeftViewController:self.leftViewController width:leftWidth]; + } + if (self.rightViewControllerID) { + int rightWidth = 250; + int rightFoldCount = 3; + float rightPullFactor = .9f; + + if (self.rightViewWidth) rightWidth = (int)self.rightViewWidth; + if (self.rightViewFoldCount) rightFoldCount = (int)self.rightViewFoldCount; + if (self.rightViewPullFactor) rightPullFactor = [self.rightViewPullFactor floatValue]; + + self.rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:self.rightViewControllerID]; + [self setRightViewController:self.rightViewController width:rightWidth rightViewFoldCount:rightFoldCount rightViewPullFactor:rightPullFactor]; + } + +} + - (id)initWithRootViewController:(UIViewController*)rootViewController { self = [super init]; From c6113a19bf56c2e6cd7702d80cc212b9cf53471c Mon Sep 17 00:00:00 2001 From: apparition Date: Sun, 1 Nov 2015 15:57:53 -0800 Subject: [PATCH 2/4] @allu22 Sets foldView hidden if contentView is visible and set pan direction in unfold left/right view --- PaperFold/PaperFold/PaperFold/MultiFoldView.m | 2 ++ PaperFold/PaperFold/PaperFold/PaperFoldView.m | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/PaperFold/PaperFold/PaperFold/MultiFoldView.m b/PaperFold/PaperFold/PaperFold/MultiFoldView.m index ca45bf2..eaf8b24 100644 --- a/PaperFold/PaperFold/PaperFold/MultiFoldView.m +++ b/PaperFold/PaperFold/PaperFold/MultiFoldView.m @@ -99,6 +99,7 @@ - (void)setFrame:(CGRect)frame float foldWidth = frame.size.width/self.numberOfFolds; FoldView *foldView = [[FoldView alloc] initWithFrame:CGRectMake(foldWidth*i,0,foldWidth,frame.size.height) foldDirection:_foldDirection]; [foldView setTag:FOLDVIEW_TAG+i]; + [foldView setHidden:!self.contentViewHolder.hidden]; [self addSubview:foldView]; } else if (_foldDirection==FoldDirectionVertical) @@ -106,6 +107,7 @@ - (void)setFrame:(CGRect)frame float foldHeight = frame.size.height/self.numberOfFolds; FoldView *foldView = [[FoldView alloc] initWithFrame:CGRectMake(0,foldHeight*(self.numberOfFolds-i)-foldHeight,frame.size.width,foldHeight) foldDirection:_foldDirection]; [foldView setTag:FOLDVIEW_TAG+i]; + [foldView setHidden:!self.contentViewHolder.hidden]; [self addSubview:foldView]; } } diff --git a/PaperFold/PaperFold/PaperFold/PaperFoldView.m b/PaperFold/PaperFold/PaperFold/PaperFoldView.m index 9a303e0..f0e236e 100644 --- a/PaperFold/PaperFold/PaperFold/PaperFoldView.m +++ b/PaperFold/PaperFold/PaperFold/PaperFoldView.m @@ -601,6 +601,8 @@ - (void)unfoldLeftView:(NSTimer*)timer [self.bottomFoldView setHidden:YES]; [self.leftFoldView setHidden:NO]; [self.rightFoldView setHidden:NO]; + + self.paperFoldInitialPanDirection = PaperFoldInitialPanDirectionHorizontal; CGAffineTransform transform = [self.contentView transform]; float x = transform.tx + (self.leftFoldView.frame.size.width-transform.tx)/4; @@ -661,6 +663,8 @@ - (void)unfoldRightView:(NSTimer*)timer [self.leftFoldView setHidden:NO]; [self.rightFoldView setHidden:NO]; + self.paperFoldInitialPanDirection = PaperFoldInitialPanDirectionHorizontal; + CGAffineTransform transform = [self.contentView transform]; float x = transform.tx - (transform.tx+self.rightFoldView.frame.size.width)/8; transform = CGAffineTransformMakeTranslation(x, 0); From e028cd056f073716267dfd9f2cd47027948906be Mon Sep 17 00:00:00 2001 From: apparition Date: Sun, 1 Nov 2015 15:58:17 -0800 Subject: [PATCH 3/4] @bartvandendriessche Fix bug where the foldcount was passed in as the pullfactor --- PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m index 8d9c5d7..b9eeb4f 100644 --- a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m +++ b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m @@ -69,7 +69,7 @@ - (void)setRightViewController:(UIViewController*)rightViewController width:(flo _rightViewController = rightViewController; [self.rightViewController.view setFrame:CGRectMake(0,0,width,[self.view bounds].size.height)]; - [self.paperFoldView setRightFoldContentView:self.rightViewController.view foldCount:rightViewFoldCount pullFactor:rightViewFoldCount]; + [self.paperFoldView setRightFoldContentView:self.rightViewController.view foldCount:rightViewFoldCount pullFactor:rightViewPullFactor]; } - (void)setLeftViewController:(UIViewController *)leftViewController width:(float)width From cf58845953a39bc9c92368401d96c2c88652aeb4 Mon Sep 17 00:00:00 2001 From: apparition Date: Sun, 1 Nov 2015 16:21:52 -0800 Subject: [PATCH 4/4] Fix int conversion for user defined width, foldcount --- .../PaperFold/PaperFold/PaperFoldNavigationController.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m index b9eeb4f..da1fd46 100644 --- a/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m +++ b/PaperFold/PaperFold/PaperFold/PaperFoldNavigationController.m @@ -24,7 +24,7 @@ - (void)awakeFromNib { if (self.leftViewControllerID) { int leftWidth = 150; - if (self.leftViewWidth) leftWidth = (int)self.leftViewWidth; + if (self.leftViewWidth) leftWidth = [self.leftViewWidth intValue]; self.leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:self.leftViewControllerID]; [self setLeftViewController:self.leftViewController width:leftWidth]; @@ -34,8 +34,8 @@ - (void)awakeFromNib { int rightFoldCount = 3; float rightPullFactor = .9f; - if (self.rightViewWidth) rightWidth = (int)self.rightViewWidth; - if (self.rightViewFoldCount) rightFoldCount = (int)self.rightViewFoldCount; + if (self.rightViewWidth) rightWidth = [self.rightViewWidth intValue]; + if (self.rightViewFoldCount) rightFoldCount = [self.rightViewFoldCount intValue]; if (self.rightViewPullFactor) rightPullFactor = [self.rightViewPullFactor floatValue]; self.rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:self.rightViewControllerID];