- December 17, 2024
- Mins Read
SAInboxViewController realizes Inbox like view transitioning.
You can launch sample project on web browser from here.
SAHistoryNavigationViewController is available through CocoaPods. If you have cocoapods 1.2.0 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 ViewControllerThose 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.
@objc(tableView:didSelectRowAtIndexPath:)
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let viewController = SAInboxDetailViewController()
if let cell = tableView.cellForRow(at: indexPath), let image = headerView.screenshotImage() {
SAInboxAnimatedTransitioningController.shared.configureCotainerView(self, cell: cell, cells: tableView.visibleCells, headerImage: image)
}
navigationController?.pushViewController(viewController, animated: true)
}
Implement UINavigationControllerDelegate
methods, like this.
func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return SAInboxAnimatedTransitioningController.shared.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 = .black
SAInboxViewController.appearance.tintColor = .white
SAInboxViewController.appearance.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
SAInboxViewController instance has Appearance property.
override func viewDidLoad() {
super.viewDidLoad()
appearance.barTintColor = .white
appearance.tintColor = .black
appearance.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.black]
//Do not forget to set true
enabledViewControllerBasedAppearance = true
}
A vertical stackview which takes subviews with different widths and adds them to it's rows with paddings, spacings etc.
AudioManager is a Swift package that provides a modular and easy-to-use interface for implementing audio feedback in your applications. It ...