forked from yeatse/YTPageController
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
26 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,18 +7,40 @@ | |
|
||
Yet another drop-in replacement of `UIPageViewController`, inspired by Apple's offical Music app. | ||
|
||
## What problem does YTPageController try to resolve? | ||
|
||
YTPageController introduces a general solution to achieve a smooth transition when user scrolls between view controllers, just as what Apple did in their Music app: | ||
|
||
To implement this effect, just add these lines of code in your `YTPageControllerDelegate`: | ||
|
||
```objectivec | ||
- (void)pageController:(YTPageController *)pageController willTransitionToIndex:(NSInteger)index { | ||
[pageController.pageCoordinator animateAlongsidePagingInView:self.segmentedControl animation:^(id<YTPageTransitionContext> _Nonnull context) { | ||
// Update your segmented control according to the information contained in YTPageTransitionContext | ||
self.segmentedControl.selectedSegmentIndex = [context toIndex]; | ||
} completion:^(id<YTPageTransitionContext> _Nonnull context) { | ||
if ([context isCanceled]) { | ||
// Revert to original state if transition canceled | ||
self.segmentedControl.selectedSegmentIndex = [context fromIndex]; | ||
} | ||
}]; | ||
} | ||
``` | ||
|
||
The key idea to control the percent of its animation is to set the CALayer's `speed` property to 0, and then update the `timeOffset` value according to UIScrollView's `contentOffset`. In addition to `UISegmentedControl`, you can also animate `UITabBar` or any `UIView` subclass you like. Refer to the example project for detailed information. | ||
|
||
## Example | ||
|
||
To run the example project, clone the repo, and run `pod install` from the Example directory first. | ||
|
||
## Requirements | ||
|
||
iOS 8.0 or above. | ||
May be working from iOS 6.0, but I didn't test it. | ||
|
||
## Installation | ||
|
||
YTPageController is available through [CocoaPods](http://cocoapods.org). To install | ||
it, simply add the following line to your Podfile: | ||
YTPageController is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your Podfile: | ||
|
||
```ruby | ||
pod "YTPageController" | ||
|
@@ -33,3 +55,4 @@ Yeatse CC, [email protected] | |
YTPageController is available under the MIT license. See the LICENSE file for more info. | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.