From 4564ce1d2d910e0b8f7f3bdca7a13721079c5667 Mon Sep 17 00:00:00 2001 From: Denis Zamataev Date: Wed, 12 Mar 2014 17:57:05 +0400 Subject: [PATCH 1/3] implements new option: yOffset. It can be used to set vertical offset to tabs and contents from topLayout guide or upper bound. --- ICViewPager/Controller/HostViewController.m | 2 ++ ICViewPager/ICViewPager/ViewPagerController.h | 3 ++- ICViewPager/ICViewPager/ViewPagerController.m | 10 ++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ICViewPager/Controller/HostViewController.m b/ICViewPager/Controller/HostViewController.m index b113549..9aa055f 100644 --- a/ICViewPager/Controller/HostViewController.m +++ b/ICViewPager/Controller/HostViewController.m @@ -125,6 +125,8 @@ - (CGFloat)viewPager:(ViewPagerController *)viewPager valueForOption:(ViewPagerO return 1.0; case ViewPagerOptionFixLatterTabsPositions: return 1.0; + case ViewPagerOptionYOffset: + return 0.0f; default: return value; } diff --git a/ICViewPager/ICViewPager/ViewPagerController.h b/ICViewPager/ICViewPager/ViewPagerController.h index 6652bfd..9a280d6 100644 --- a/ICViewPager/ICViewPager/ViewPagerController.h +++ b/ICViewPager/ICViewPager/ViewPagerController.h @@ -28,7 +28,8 @@ typedef NS_ENUM(NSUInteger, ViewPagerOption) { ViewPagerOptionStartFromSecondTab, ViewPagerOptionCenterCurrentTab, ViewPagerOptionFixFormerTabsPositions, - ViewPagerOptionFixLatterTabsPositions + ViewPagerOptionFixLatterTabsPositions, + ViewPagerOptionYOffset }; /** diff --git a/ICViewPager/ICViewPager/ViewPagerController.m b/ICViewPager/ICViewPager/ViewPagerController.m index 4281853..70f2608 100644 --- a/ICViewPager/ICViewPager/ViewPagerController.m +++ b/ICViewPager/ICViewPager/ViewPagerController.m @@ -21,6 +21,7 @@ #define kCenterCurrentTab 0.0 #define kFixFormerTabsPositions 0.0 #define kFixLatterTabsPositions 0.0 +#define kYOffset 0.0 #define kIndicatorColor [UIColor colorWithRed:178.0/255.0 green:203.0/255.0 blue:57.0/255.0 alpha:0.75] #define kTabsViewBackgroundColor [UIColor colorWithRed:234.0/255.0 green:234.0/255.0 blue:234.0/255.0 alpha:0.75] @@ -210,16 +211,21 @@ - (void)layoutSubviews { } } + CGFloat yOffset = kYOffset; + if ([self.delegate respondsToSelector:@selector(viewPager:valueForOption:withDefault:)]) { + yOffset = [self.delegate viewPager:self valueForOption:ViewPagerOptionYOffset withDefault:yOffset]; + } + CGRect frame = self.tabsView.frame; frame.origin.x = 0.0; - frame.origin.y = [self.tabLocation boolValue] ? topLayoutGuide : CGRectGetHeight(self.view.frame) - [self.tabHeight floatValue]; + frame.origin.y = (yOffset) + ([self.tabLocation boolValue] ? topLayoutGuide : CGRectGetHeight(self.view.frame) - [self.tabHeight floatValue]); frame.size.width = CGRectGetWidth(self.view.frame); frame.size.height = [self.tabHeight floatValue]; self.tabsView.frame = frame; frame = self.contentView.frame; frame.origin.x = 0.0; - frame.origin.y = [self.tabLocation boolValue] ? topLayoutGuide + CGRectGetHeight(self.tabsView.frame) : topLayoutGuide; + frame.origin.y = (yOffset) + ([self.tabLocation boolValue] ? topLayoutGuide + CGRectGetHeight(self.tabsView.frame) : topLayoutGuide); frame.size.width = CGRectGetWidth(self.view.frame); frame.size.height = CGRectGetHeight(self.view.frame) - (topLayoutGuide + CGRectGetHeight(self.tabsView.frame)) - CGRectGetHeight(self.tabBarController.tabBar.frame); self.contentView.frame = frame; From 14c732f302fbb1b9bde3d8a7151b678d4e6c20db Mon Sep 17 00:00:00 2001 From: Denis Zamataev Date: Wed, 12 Mar 2014 18:01:57 +0400 Subject: [PATCH 2/3] implements subtracting yOffset from height --- ICViewPager/ICViewPager/ViewPagerController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ICViewPager/ICViewPager/ViewPagerController.m b/ICViewPager/ICViewPager/ViewPagerController.m index 70f2608..fcc8b30 100644 --- a/ICViewPager/ICViewPager/ViewPagerController.m +++ b/ICViewPager/ICViewPager/ViewPagerController.m @@ -220,14 +220,14 @@ - (void)layoutSubviews { frame.origin.x = 0.0; frame.origin.y = (yOffset) + ([self.tabLocation boolValue] ? topLayoutGuide : CGRectGetHeight(self.view.frame) - [self.tabHeight floatValue]); frame.size.width = CGRectGetWidth(self.view.frame); - frame.size.height = [self.tabHeight floatValue]; + frame.size.height = ([self.tabHeight floatValue]) - (yOffset); self.tabsView.frame = frame; frame = self.contentView.frame; frame.origin.x = 0.0; frame.origin.y = (yOffset) + ([self.tabLocation boolValue] ? topLayoutGuide + CGRectGetHeight(self.tabsView.frame) : topLayoutGuide); frame.size.width = CGRectGetWidth(self.view.frame); - frame.size.height = CGRectGetHeight(self.view.frame) - (topLayoutGuide + CGRectGetHeight(self.tabsView.frame)) - CGRectGetHeight(self.tabBarController.tabBar.frame); + frame.size.height = (CGRectGetHeight(self.view.frame) - (topLayoutGuide + CGRectGetHeight(self.tabsView.frame)) - CGRectGetHeight(self.tabBarController.tabBar.frame)) - yOffset; self.contentView.frame = frame; } From c16360c89008451658cbad81ca12d69e26c7b9d2 Mon Sep 17 00:00:00 2001 From: Denis Zamataev Date: Wed, 12 Mar 2014 18:04:45 +0400 Subject: [PATCH 3/3] fixes silly error --- ICViewPager/ICViewPager/ViewPagerController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ICViewPager/ICViewPager/ViewPagerController.m b/ICViewPager/ICViewPager/ViewPagerController.m index fcc8b30..5fe9a1e 100644 --- a/ICViewPager/ICViewPager/ViewPagerController.m +++ b/ICViewPager/ICViewPager/ViewPagerController.m @@ -220,7 +220,7 @@ - (void)layoutSubviews { frame.origin.x = 0.0; frame.origin.y = (yOffset) + ([self.tabLocation boolValue] ? topLayoutGuide : CGRectGetHeight(self.view.frame) - [self.tabHeight floatValue]); frame.size.width = CGRectGetWidth(self.view.frame); - frame.size.height = ([self.tabHeight floatValue]) - (yOffset); + frame.size.height = [self.tabHeight floatValue]; self.tabsView.frame = frame; frame = self.contentView.frame;