diff --git a/Example/Example.xcodeproj/project.pbxproj b/Example/Example.xcodeproj/project.pbxproj index f8531cd..54fa5dc 100644 --- a/Example/Example.xcodeproj/project.pbxproj +++ b/Example/Example.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 28070C6426B200F5002346E1 /* TwitterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB89C58826961E9E002E7B28 /* TwitterView.swift */; }; 2857501C24C21EB400ED22AD /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2857501B24C21EB400ED22AD /* Tests_iOS.swift */; }; 2857502724C21EB400ED22AD /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2857502624C21EB400ED22AD /* Tests_macOS.swift */; }; 2857502924C21EB400ED22AD /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2857500024C21EB200ED22AD /* ExampleApp.swift */; }; @@ -167,6 +168,19 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 28070C6126B2005C002346E1 /* Additional Example Source Code */ = { + isa = PBXGroup; + children = ( + AB28D6CE269F51AD00679D5E /* Helpers */, + AB9F87F026826D9800CCBFC3 /* Views */, + AB9F87DD26826C1100CCBFC3 /* Model */, + AB9F87CF26826AA700CCBFC3 /* Resources */, + 2857500024C21EB200ED22AD /* ExampleApp.swift */, + 2857500124C21EB200ED22AD /* ContentView.swift */, + ); + path = "Additional Example Source Code"; + sourceTree = ""; + }; 28574FFA24C21EB200ED22AD = { isa = PBXGroup; children = ( @@ -184,12 +198,10 @@ 28574FFF24C21EB200ED22AD /* Shared */ = { isa = PBXGroup; children = ( - AB28D6CE269F51AD00679D5E /* Helpers */, - AB9F87F026826D9800CCBFC3 /* Views */, - AB9F87DD26826C1100CCBFC3 /* Model */, - AB9F87CF26826AA700CCBFC3 /* Resources */, - 2857500024C21EB200ED22AD /* ExampleApp.swift */, - 2857500124C21EB200ED22AD /* ContentView.swift */, + AB89C58826961E9E002E7B28 /* TwitterView.swift */, + AB89C57526961A3E002E7B28 /* InstagramView.swift */, + AB89C56E26961A0B002E7B28 /* YoutubeView.swift */, + 28070C6126B2005C002346E1 /* Additional Example Source Code */, 2857500224C21EB400ED22AD /* Assets.xcassets */, ); path = Shared; @@ -295,7 +307,6 @@ children = ( AB7EEE8326ABEE4B008804D4 /* Models */, AB89C58026961E8E002E7B28 /* TwitterNavBarItem.swift */, - AB89C58826961E9E002E7B28 /* TwitterView.swift */, ); path = Twitter; sourceTree = ""; @@ -344,7 +355,6 @@ children = ( AB7EEE8126AB5CA2008804D4 /* Models */, AB9F8806268282FA00CCBFC3 /* YoutubeNavBarItem.swift */, - AB89C56E26961A0B002E7B28 /* YoutubeView.swift */, ); path = Youtube; sourceTree = ""; @@ -354,7 +364,6 @@ children = ( AB7EEE8226ABEE45008804D4 /* Models */, AB9F880E2682837E00CCBFC3 /* InstagramNavBarItem.swift */, - AB89C57526961A3E002E7B28 /* InstagramView.swift */, ); path = Instagram; sourceTree = ""; @@ -591,6 +600,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 28070C6426B200F5002346E1 /* TwitterView.swift in Sources */, 2857502C24C21EB400ED22AD /* ContentView.swift in Sources */, 2857502A24C21EB400ED22AD /* ExampleApp.swift in Sources */, ); diff --git a/Example/Shared/ContentView.swift b/Example/Shared/Additional Example Source Code/ContentView.swift similarity index 100% rename from Example/Shared/ContentView.swift rename to Example/Shared/Additional Example Source Code/ContentView.swift diff --git a/Example/Shared/ExampleApp.swift b/Example/Shared/Additional Example Source Code/ExampleApp.swift similarity index 100% rename from Example/Shared/ExampleApp.swift rename to Example/Shared/Additional Example Source Code/ExampleApp.swift diff --git a/Example/Shared/Helpers/URLImage/ImageCache.swift b/Example/Shared/Additional Example Source Code/Helpers/URLImage/ImageCache.swift similarity index 100% rename from Example/Shared/Helpers/URLImage/ImageCache.swift rename to Example/Shared/Additional Example Source Code/Helpers/URLImage/ImageCache.swift diff --git a/Example/Shared/Helpers/URLImage/URLImageModel.swift b/Example/Shared/Additional Example Source Code/Helpers/URLImage/URLImageModel.swift similarity index 100% rename from Example/Shared/Helpers/URLImage/URLImageModel.swift rename to Example/Shared/Additional Example Source Code/Helpers/URLImage/URLImageModel.swift diff --git a/Example/Shared/Helpers/URLImage/URLImageView.swift b/Example/Shared/Additional Example Source Code/Helpers/URLImage/URLImageView.swift similarity index 100% rename from Example/Shared/Helpers/URLImage/URLImageView.swift rename to Example/Shared/Additional Example Source Code/Helpers/URLImage/URLImageView.swift diff --git a/Example/Shared/Model/Post.swift b/Example/Shared/Additional Example Source Code/Model/Post.swift similarity index 100% rename from Example/Shared/Model/Post.swift rename to Example/Shared/Additional Example Source Code/Model/Post.swift diff --git a/Example/Shared/Model/PostsFactory.swift b/Example/Shared/Additional Example Source Code/Model/PostsFactory.swift similarity index 100% rename from Example/Shared/Model/PostsFactory.swift rename to Example/Shared/Additional Example Source Code/Model/PostsFactory.swift diff --git a/Example/Shared/Model/User.swift b/Example/Shared/Additional Example Source Code/Model/User.swift similarity index 100% rename from Example/Shared/Model/User.swift rename to Example/Shared/Additional Example Source Code/Model/User.swift diff --git a/Example/Shared/Resources/postsData.json b/Example/Shared/Additional Example Source Code/Resources/postsData.json similarity index 93% rename from Example/Shared/Resources/postsData.json rename to Example/Shared/Additional Example Source Code/Resources/postsData.json index fdd2192..f8c79fb 100644 --- a/Example/Shared/Resources/postsData.json +++ b/Example/Shared/Additional Example Source Code/Resources/postsData.json @@ -5,7 +5,7 @@ "created_at":"2014-04-17T00:45:40.556Z", "user":{ "id":9, - "name":"Lisa Simpsons", + "name":"Lisa Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Lisa_Simpsons.png" } }, @@ -15,7 +15,7 @@ "created_at":"2014-04-09T21:29:59.982Z", "user":{ "id":7, - "name":"Bart Simpsons", + "name":"Bart Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Bart_Simpsons.png" } }, @@ -35,7 +35,7 @@ "created_at":"2014-04-03T20:21:32.119Z", "user":{ "id":8, - "name":"Homer Simpsons", + "name":"Homer Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png" } }, @@ -45,7 +45,7 @@ "created_at":"2014-04-03T02:04:43.053Z", "user":{ "id":8, - "name":"Homer Simpsons", + "name":"Homer Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png" } }, @@ -55,7 +55,7 @@ "created_at":"2014-04-02T03:48:56.381Z", "user":{ "id":3, - "name":"Marge Simpsons", + "name":"Marge Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Marge_Simpsons.png" } }, @@ -75,7 +75,7 @@ "created_at":"2014-03-22T14:24:22.408Z", "user":{ "id":3, - "name":"Marge Simpsons", + "name":"Marge Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Marge_Simpsons.png" } }, @@ -95,7 +95,7 @@ "created_at":"2014-03-20T02:44:28.075Z", "user":{ "id":8, - "name":"Homer Simpsons", + "name":"Homer Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png" } }, @@ -115,7 +115,7 @@ "created_at":"2014-03-03T19:02:56.032Z", "user":{ "id":8, - "name":"Homer Simpsons", + "name":"Homer Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png" } }, @@ -135,7 +135,7 @@ "created_at":"2014-02-18T16:38:37.958Z", "user":{ "id":7, - "name":"Bart Simpsons", + "name":"Bart Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Bart_Simpsons.png" } }, @@ -145,7 +145,7 @@ "created_at":"2014-02-16T22:11:33.236Z", "user":{ "id":2, - "name":"Maggie Simpsons", + "name":"Maggie Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Maggie_Simpsons.png" } }, @@ -155,7 +155,7 @@ "created_at":"2014-02-16T19:09:55.062Z", "user":{ "id":8, - "name":"Homer Simpsons", + "name":"Homer Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Homer_Simpsons.png" } }, @@ -165,7 +165,7 @@ "created_at":"2014-02-16T13:50:25.313Z", "user":{ "id":3, - "name":"Marge Simpsons", + "name":"Marge Simpson", "imageURL":"http://obscure-refuge-3149.herokuapp.com/images/Marge_Simpsons.png" } }, diff --git a/Example/Shared/Views/Instagram/InstagramNavBarItem.swift b/Example/Shared/Additional Example Source Code/Views/Instagram/InstagramNavBarItem.swift similarity index 100% rename from Example/Shared/Views/Instagram/InstagramNavBarItem.swift rename to Example/Shared/Additional Example Source Code/Views/Instagram/InstagramNavBarItem.swift diff --git a/Example/Shared/Views/Instagram/Models/GalleryModel.swift b/Example/Shared/Additional Example Source Code/Views/Instagram/Models/GalleryModel.swift similarity index 100% rename from Example/Shared/Views/Instagram/Models/GalleryModel.swift rename to Example/Shared/Additional Example Source Code/Views/Instagram/Models/GalleryModel.swift diff --git a/Example/Shared/Views/Instagram/Models/LikedModel.swift b/Example/Shared/Additional Example Source Code/Views/Instagram/Models/LikedModel.swift similarity index 100% rename from Example/Shared/Views/Instagram/Models/LikedModel.swift rename to Example/Shared/Additional Example Source Code/Views/Instagram/Models/LikedModel.swift diff --git a/Example/Shared/Views/Instagram/Models/ListModel.swift b/Example/Shared/Additional Example Source Code/Views/Instagram/Models/ListModel.swift similarity index 100% rename from Example/Shared/Views/Instagram/Models/ListModel.swift rename to Example/Shared/Additional Example Source Code/Views/Instagram/Models/ListModel.swift diff --git a/Example/Shared/Views/Instagram/Models/SavedModel.swift b/Example/Shared/Additional Example Source Code/Views/Instagram/Models/SavedModel.swift similarity index 100% rename from Example/Shared/Views/Instagram/Models/SavedModel.swift rename to Example/Shared/Additional Example Source Code/Views/Instagram/Models/SavedModel.swift diff --git a/Example/Shared/Views/Posts/PostDetail.swift b/Example/Shared/Additional Example Source Code/Views/Posts/PostDetail.swift similarity index 100% rename from Example/Shared/Views/Posts/PostDetail.swift rename to Example/Shared/Additional Example Source Code/Views/Posts/PostDetail.swift diff --git a/Example/Shared/Views/Posts/PostRow.swift b/Example/Shared/Additional Example Source Code/Views/Posts/PostRow.swift similarity index 100% rename from Example/Shared/Views/Posts/PostRow.swift rename to Example/Shared/Additional Example Source Code/Views/Posts/PostRow.swift diff --git a/Example/Shared/Views/Posts/PostsList.swift b/Example/Shared/Additional Example Source Code/Views/Posts/PostsList.swift similarity index 100% rename from Example/Shared/Views/Posts/PostsList.swift rename to Example/Shared/Additional Example Source Code/Views/Posts/PostsList.swift diff --git a/Example/Shared/Views/Twitter/LikesModel.swift b/Example/Shared/Additional Example Source Code/Views/Twitter/LikesModel.swift similarity index 100% rename from Example/Shared/Views/Twitter/LikesModel.swift rename to Example/Shared/Additional Example Source Code/Views/Twitter/LikesModel.swift diff --git a/Example/Shared/Views/Twitter/MediaModel.swift b/Example/Shared/Additional Example Source Code/Views/Twitter/MediaModel.swift similarity index 100% rename from Example/Shared/Views/Twitter/MediaModel.swift rename to Example/Shared/Additional Example Source Code/Views/Twitter/MediaModel.swift diff --git a/Example/Shared/Views/Twitter/TweetsModel.swift b/Example/Shared/Additional Example Source Code/Views/Twitter/TweetsModel.swift similarity index 100% rename from Example/Shared/Views/Twitter/TweetsModel.swift rename to Example/Shared/Additional Example Source Code/Views/Twitter/TweetsModel.swift diff --git a/Example/Shared/Views/Twitter/TwitterNavBarItem.swift b/Example/Shared/Additional Example Source Code/Views/Twitter/TwitterNavBarItem.swift similarity index 100% rename from Example/Shared/Views/Twitter/TwitterNavBarItem.swift rename to Example/Shared/Additional Example Source Code/Views/Twitter/TwitterNavBarItem.swift diff --git a/Example/Shared/Views/Youtube/Models/AccountModel.swift b/Example/Shared/Additional Example Source Code/Views/Youtube/Models/AccountModel.swift similarity index 100% rename from Example/Shared/Views/Youtube/Models/AccountModel.swift rename to Example/Shared/Additional Example Source Code/Views/Youtube/Models/AccountModel.swift diff --git a/Example/Shared/Views/Youtube/Models/HomeModel.swift b/Example/Shared/Additional Example Source Code/Views/Youtube/Models/HomeModel.swift similarity index 100% rename from Example/Shared/Views/Youtube/Models/HomeModel.swift rename to Example/Shared/Additional Example Source Code/Views/Youtube/Models/HomeModel.swift diff --git a/Example/Shared/Views/Youtube/Models/TrendingModel.swift b/Example/Shared/Additional Example Source Code/Views/Youtube/Models/TrendingModel.swift similarity index 100% rename from Example/Shared/Views/Youtube/Models/TrendingModel.swift rename to Example/Shared/Additional Example Source Code/Views/Youtube/Models/TrendingModel.swift diff --git a/Example/Shared/Views/Youtube/YoutubeNavBarItem.swift b/Example/Shared/Additional Example Source Code/Views/Youtube/YoutubeNavBarItem.swift similarity index 100% rename from Example/Shared/Views/Youtube/YoutubeNavBarItem.swift rename to Example/Shared/Additional Example Source Code/Views/Youtube/YoutubeNavBarItem.swift diff --git a/Example/Shared/Views/Instagram/InstagramView.swift b/Example/Shared/InstagramView.swift similarity index 100% rename from Example/Shared/Views/Instagram/InstagramView.swift rename to Example/Shared/InstagramView.swift diff --git a/Example/Shared/Views/Twitter/TwitterView.swift b/Example/Shared/TwitterView.swift similarity index 100% rename from Example/Shared/Views/Twitter/TwitterView.swift rename to Example/Shared/TwitterView.swift diff --git a/Example/Shared/Views/Youtube/YoutubeView.swift b/Example/Shared/YoutubeView.swift similarity index 100% rename from Example/Shared/Views/Youtube/YoutubeView.swift rename to Example/Shared/YoutubeView.swift diff --git a/README.md b/README.md index 9b2010c..2a00e0a 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,19 @@ # PagerTabStrip

-Build status + Platform iOS -Swift 5 compatible +Swift 5 compatible Carthage compatible -CocoaPods compatible +CocoaPods compatible License: MIT

-By [Xmartlabs SRL](http://xmartlabs.com). +Made with :heart: by [Xmartlabs](http://xmartlabs.com) team. [XLPagerTabStrip](https://github.com/xmartlabs/XLPagerTabStrip) for SwiftUI! ## Introduction -[XLPagerTabStrip](https://github.com/xmartlabs/XLPagerTabStrip) for SwiftUI! - -PagerTabStrip provides an interactive component that allows the user to navigate between pages using a custom navigation bar or swiping up. This powerful tool is totally built in SwiftUI native components. +PagerTabStrip is the first pager view built in pure SwiftUI. It provides PagerTabStripView component to create interactive pager views which contains child views. It allows the user to switch between your views either by swiping or tapping a tab bar item. @@ -25,63 +23,44 @@ PagerTabStrip provides an interactive component that allows the user to navigate
-## Examples +Unlike Apple's TabView it provides: +1. Flexible way to fully customize pager tab views. +2. Each pagerTabItem view can be of different type. +3. Bar that contains pager tab item is placed on top. +4. Indicator view indicates selected child view. +5. `onPageAppear` callback to easily trigger actions when page is selected. +6. Ability to update pagerTabItem according to highlighted, selected, normal state. -Follow these 3 steps to run Example project: clone PagerTabStrip repository, open PagerTabStrip workspace and run the _Example_ project. - -## Installation - -### CocoaPods - -[CocoaPods](https://cocoapods.org/) is a dependency manager for Cocoa projects. - -To install PagerTabStrip, simply add the following line to your Podfile: - -```ruby -pod 'PagerTabStrip', '~> 1.0' -``` - -### Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a simple, decentralized dependency manager for Cocoa. - -To install PagerTabStrip, simply add the following line to your Cartfile: - -```ogdl -github "xmartlabs/PagerTabStrip" ~> 1.0 -``` - -## Requirements - -- iOS 14+ -- Xcode 12.X +..and we've planned many more functionalities, we have plans to support each one of the XLPagerTabStrip [styles](https://github.com/xmartlabs/XLPagerTabStrip#pager-types). ## Usage -Creating a page view is super straightforward, you need to place your custom tab views into a `PagerTabStripView` view and apply the `pagerTabItem( _: )` modifier to each one to specify the navigation bar tab item. +Creating a page view is super straightforward, you just need to place your custom tab views into a `PagerTabStripView` view and apply the `pagerTabItem( _: )` modifier to each one to specify its navigation bar tab item. ```swift import PagerTabStrip -struct PagerView: View { +struct MyPagerView: View { var body: some View { + PagerTabStripView() { - MyView() + MyFirstView() .pagerTabItem { TitleNavBarItem(title: "Tab 1") } - AnotherView() + MySecondView() .pagerTabItem { TitleNavBarItem(title: "Tab 2") } if User.isLoggedIn { - ProfileView() + MyProfileView() .pagerTabItem { TitleNavBarItem(title: "Profile") } } } + } } ``` @@ -90,47 +69,42 @@ struct PagerView: View { -You can specify the index of the initial page shown in the `XLPagerView` through `selection` parameter in the initializer. +
+
+ +To specify the initial selected page you can pass the `selection` init parameter. ```swift -import PagerTabStrip +struct MyPagerView: View { -struct PagerView: View { @State var selection = 1 var body: some View { - PagerTabStripView() { - MyView(selection: $selection) + PagerTabStripView(selection: $selection) { + MyFirstView() .pagerTabItem { TitleNavBarItem(title: "Tab 1") } - AnotherView() - .pagerTabItem { - TitleNavBarItem(title: "Tab 2") - } - if User.isLoggedIn { - ProfileView() - .pagerTabItem { - TitleNavBarItem(title: "Profile") - } - } + ... + .. + . } } } ``` +As you may've already noticed, everything is SwiftUI code, so you can update the child views according to SwiftUI state objects as shown above with `if User.isLoggedIn`. + ### Customize pager style You have the ability to customize some aspects of the navigation bar and its indicator bar using the `pagerTabStripViewStyle` modifier. The customizable settings are: -- Spacing between navigation bar items -- Navigation bar height -- Indicator bar height -- Indicator bar color +- Spacing between navigation bar items +- Navigation bar height +- Indicator bar height +- Indicator bar color ```swift -import PagerTabStrip - struct PagerView: View { var body: some View { @@ -150,7 +124,7 @@ struct PagerView: View { } } } - .pagerTabStripViewStyle(PagerTabViewStyle(tabItemSpacing: 0, tabItemHeight: 50, indicatorBarHeight: 2, indicatorBarColor: Color.gray)) + .pagerTabStripViewStyle(PagerTabViewStyle(tabItemSpacing: 0, tabItemHeight: 50, indicatorBarHeight: 2, indicatorBarColor: .gray)) } } ``` @@ -161,7 +135,7 @@ In this example, we add some settings like the tab bar height, indicator bar col -## Navigation bar +### Navigation bar The navigation bar supports custom tab items. You need to specify its appearance creating a struct that implements `View` protocol. @@ -183,14 +157,14 @@ struct TitleNavBarItem: View { } ``` -### Customize selected and highlighted items +#### Customize selected and highlighted items -You can define the style of your nav items when they are selected or highlighted by implementing `PagerTabViewDelegate` protocol in your nav item view. +You can define the style of your nav items when they are selected or highlighted by conforming `PagerTabViewDelegate` protocol in your nav item view. -In this example we are going to change the text and background color when the tab is highlighted and selected. +In the following example we change the text and background color when the tab is highlighted and selected. ```swift -private class NavItemTheme: ObservableObject { +private class NavTabViewTheme: ObservableObject { @Published var textColor = Color.gray @Published var backgroundColor = Color.white } @@ -228,13 +202,11 @@ struct TitleNavBarItem: View, PagerTabViewDelegate { -## onPageAppear modifier +### onPageAppear modifier -You can use this callback if you want to trigger some action when the user switches to this page, either by scrolling to it or tapping its tab. This modifier is applied to a specific page. +`onPageAppear` callback allows you to trigger some action when a page view gets selected, either by scrolling to it or tapping its tab. This modifier is applied only to its associated page view. ```swift -import PagerTabStrip - struct PagerView: View { var body: some View { @@ -247,25 +219,51 @@ struct PagerView: View { model.reload() } } - .pagerTabStripViewStyle(PagerTabViewStyle(tabItemSpacing: 0, tabItemHeight: 50, indicatorBarHeight: 2, indicatorBarColor: Color.gray)) + .pagerTabStripViewStyle(PagerTabViewStyle(tabItemSpacing: 0, tabItemHeight: 50, indicatorBarHeight: 2, indicatorBarColor: .gray)) } } ``` +## Examples + +Follow these 3 steps to run Example project +* Clone PagerTabStrip repo. +* Open PagerTabStrip workspace. +* Run the _Example_ project. + +## Installation + +### CocoaPods + +To install PagerTabStrip using CocoaPods, simply add the following line to your Podfile: + +```ruby +pod 'PagerTabStrip', '~> 1.0' +``` + +### Carthage + +To install PagerTabStrip using Carthage, simply add the following line to your Cartfile: + +```ruby +github "xmartlabs/PagerTabStrip" ~> 1.0 +``` + +## Requirements + +- iOS 14+ +- Xcode 12.X + ## Author -- [Xmartlabs SRL](https://github.com/xmartlabs) ([@xmartlabs](https://twitter.com/xmartlabs)) +- [Xmartlabs SRL](https://github.com/xmartlabs) ([@xmartlabs](https://twitter.com/xmartlabs)) ## Getting involved -- If you **want to contribute** please feel free to **submit pull requests**. -- If you **have a feature request** please **open an issue**. -- If you **found a bug** or **need help** please **check older issues and threads on [StackOverflow](http://stackoverflow.com/questions/tagged/PagerTabStrip) (Tag 'PagerTabStrip') before submitting an issue**. +- If you **want to contribute** please feel free to **submit pull requests**. +- If you **have a feature request** please **open an issue**. +- If you **found a bug** or **need help** please **check older issues and threads on [StackOverflow](http://stackoverflow.com/questions/tagged/PagerTabStrip) (Tag 'PagerTabStrip') before submitting an issue**. Before contribute check the [CONTRIBUTING](https://github.com/xmartlabs/PagerTabStrip/blob/master/CONTRIBUTING.md) file for more info. If you use **PagerTabStrip** in your app We would love to hear about it! Drop us a line on [Twitter](https://twitter.com/xmartlabs). - -# Changelog - -See [CHANGELOG](CHANGELOG.md).