Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxep/MXSegmentedPager
Segmented pager view with Parallax header
https://github.com/maxep/MXSegmentedPager
Last synced: about 1 month ago
JSON representation
Segmented pager view with Parallax header
- Host: GitHub
- URL: https://github.com/maxep/MXSegmentedPager
- Owner: maxep
- License: mit
- Created: 2015-02-25T17:47:41.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2022-06-13T14:36:15.000Z (over 2 years ago)
- Last Synced: 2024-10-16T14:06:04.385Z (about 2 months ago)
- Language: Objective-C
- Homepage:
- Size: 38.2 MB
- Stars: 1,270
- Watchers: 35
- Forks: 252
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome - MXSegmentedPager - Segmented pager view with Parallax header (etc)
README
# MXSegmentedPager
[![CI Status](http://img.shields.io/travis/maxep/MXSegmentedPager.svg?style=flat)](https://travis-ci.org/maxep/MXSegmentedPager)
[![Version](https://img.shields.io/cocoapods/v/MXSegmentedPager.svg?style=flat)](http://cocoadocs.org/docsets/MXSegmentedPager)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![License](https://img.shields.io/cocoapods/l/MXSegmentedPager.svg?style=flat)](http://cocoadocs.org/docsets/MXSegmentedPager)
[![Platform](https://img.shields.io/cocoapods/p/MXSegmentedPager.svg?style=flat)](http://cocoadocs.org/docsets/MXSegmentedPager)
[![Dependency Status](https://www.versioneye.com/objective-c/mxsegmentedpager/1.0/badge.svg)](https://www.versioneye.com/objective-c/mxsegmentedpager):warning: This project is no longer maintained, see [#263](https://github.com/maxep/MXSegmentedPager/issues/263) :warning:
MXSegmentedPager combines [MXPagerView](https://github.com/maxep/MXPagerView) with [MXSegmentedControl](https://github.com/maxep/MXSegmentedControl) to control the page selection. The integration of [MXParallaxHeader](https://github.com/maxep/MXParallaxHeader) allows you to add a parallax header on top while keeping a reliable scrolling effect.
| Simple view | Parallax view |
|-------------------------------|---------------------------------|
|![Demo](Examples/Simple.gif)|![Demo](Examples/Parallax.gif)|## Highlight
+ [MXSegmentedControl](https://github.com/maxep/MXSegmentedControl) is a very customizable control.
+ [MXParallaxHeader](https://github.com/maxep/MXParallaxHeader) supports any kind of view with different modes.
+ [MXPagerView](https://github.com/maxep/MXPagerView) lazily loads pages and supports reusable page registration.
+ Reliable vertical scroll with any view hierarchy.
+ Can load view-controller from storyboard using custom segues.
+ Fully documented.## Usage
### MXSegmentedPager calls data source methods to load pages.
Swift
```swift
// Asks the data source to return the number of pages in the segmented pager.
func numberOfPages(in segmentedPager: MXSegmentedPager) -> Int {
return 10
}// Asks the data source for a title realted to a particular page of the segmented pager.
func segmentedPager(_ segmentedPager: MXSegmentedPager, titleForSectionAt index: Int) -> String {
return "Page \(index)"
}// Asks the data source for a view to insert in a particular page of the pager.
func segmentedPager(_ segmentedPager: MXSegmentedPager, viewForPageAt index: Int) -> UIView {
let label = UILabel()
label.text = "Page \(index)"
label.textAlignment = .center
return label;
}
```Objective-C
```objective-c
#pragma mark// Asks the data source to return the number of pages in the segmented pager.
- (NSInteger)numberOfPagesInSegmentedPager:(MXSegmentedPager *)segmentedPager {
return 10;
}// Asks the data source for a title realted to a particular page of the segmented pager.
- (NSString *)segmentedPager:(MXSegmentedPager *)segmentedPager titleForSectionAtIndex:(NSInteger)index {
return [NSString stringWithFormat:@"Page %li", (long) index];
}// Asks the data source for a view to insert in a particular page of the pager.
- (UIView *)segmentedPager:(MXSegmentedPager *)segmentedPager viewForPageAtIndex:(NSInteger)index {
UILabel *label = [UILabel new];
label.text = [NSString stringWithFormat:@"Page #%i", index];
label.textAlignment = NSTextAlignmentCenter;;return label;
}
```### Adding a parallax header to a MXSegmentedPager is straightforward, e.g:
Swift
```swift
let headerView = UIImageView()
headerView.image = UIImage(named: "success-baby")
headerView.contentMode = .scaleAspectFitlet segmentedPager = MXSegmentedPager()
segmentedPager.parallaxHeader.view = headerView
segmentedPager.parallaxHeader.height = 150
segmentedPager.parallaxHeader.mode = .fill
segmentedPager.parallaxHeader.minimumHeight = 20
```Objective-C
```objective-c
UIImageView *headerView = [UIImageView new];
headerView.image = [UIImage imageNamed:@"success-baby"];
headerView.contentMode = UIViewContentModeScaleAspectFill;
MXSegmentedPager *segmentedPager = [MXSegmentedPager new];
segmentedPager.parallaxHeader.view = headerView;
segmentedPager.parallaxHeader.height = 150;
segmentedPager.parallaxHeader.mode = MXParallaxHeaderModeFill;
segmentedPager.parallaxHeader.minimumHeight = 20;
```## Examples
If you want to try it, simply run:
```
pod try MXSegmentedPager
```
Or clone the repo and run `pod install` from the Example directory first.+ See MXSimpleViewController for a standard implementation.
+ See MXParallaxViewController to implement a pager with a parallax header.
+ See MXExampleViewController for a MXSegmentedPagerController subclass example.This repo also provides a **Swift** example project, see [Examples/Swift](Examples/Swift).
## Installation
MXSegmentedPager is available through [CocoaPods](https://cocoapods.org/pods/MXSegmentedPager). To install
it, simply add the following line to your Podfile:```
pod 'MXSegmentedPager'
```## Documentation
Documentation is available through [CocoaDocs](http://cocoadocs.org/docsets/MXSegmentedPager/).
## Author[Maxime Epain](http://maxep.github.io)
[![Twitter](https://img.shields.io/badge/twitter-%40MaximeEpain-blue.svg?style=flat)](https://twitter.com/MaximeEpain)
## License
MXSegmentedPager is available under the MIT license. See the [LICENSE](LICENSE) file for more info.