SAInboxViewController realizes Inbox like view transitioning.
- Inbox like view transitioning
- Scrolling up to begining of contents transitioning
- Scrolling down to end of contents transitioning
- Header dragging transitioning
- Left edge swiping transitioning
SAHistoryNavigationViewController is available through CocoaPods. If you have cocoapods 0.36.1 or greater, you can install it, simply add the following line to your Podfile:
pod "SAInboxViewController"
Add the SAInboxViewController directory to your project.
If you install from cocoapods, you have to write import SAInboxViewController
.
First of all, please use SAInboxViewController
with UINavigationController
.
There are two ViewControllers to realize Inbox transitioning. Please extend those ViewControllers.
SAInboxViewController
... using as rootViewControllerSAInboxDetailViewController
... using as second ViewController
Those ViewControllers have UITableView
, so implement ordinary UITableView
behavior with that tableView.
If you use UITableViewDelegate
in ViewController which extends SAInboxDetailViewController
, please call super methods for below two methods.
override func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
super.scrollViewDidEndDragging(scrollView, willDecelerate: decelerate)
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
super.scrollViewDidScroll(scrollView)
}
If you want to present ViewController from rootViewController, implement func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
like this.
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let viewController = SAInboxDetailViewController()
if let cell = tableView.cellForRowAtIndexPath(indexPath), cells = tableView.visibleCells() as? [UITableViewCell] {
SAInboxAnimatedTransitioningController.sharedInstance().configureCotainerView(view, cell: cell, cells: cells, headerImage: headerView.screenshotImage())
}
navigationController?.pushViewController(viewController, animated: true)
}
Implement UINavigationControllerDelegate
methods, like this.
func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return SAInboxAnimatedTransitioningController.sharedInstance().setOperation(operation)
}
You can change HeaderView barTintColor
, tintColor
and titleTextAttributes
.
There are 2 ways to change HeaderView Appearance.
SAInboxViewController class has Appearance property
SAInboxViewController.appearance.barTintColor = .blackColor()
SAInboxViewController.appearance.tintColor = .whiteColor()
SAInboxViewController.appearance.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]
SAInboxViewController instance has Appearance property.
override func viewDidLoad() {
super.viewDidLoad()
appearance.barTintColor = .whiteColor()
appearance.tintColor = .blackColor()
appearance.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.blackColor()]
//Do not forget to set true
enabledViewControllerBasedAppearance = true
}
- Xcode 6.4 or greater
- iOS7.0(manually only) or greater
Taiki Suzuki, [email protected]
SAInboxViewController is available under the MIT license. See the LICENSE file for more info.