UITableViewController with accordion effect (expand / collapse cells)
Simple and lightweight solution for making accordion effect in table view controller. Show detailed content on demand.
- Create accordion effect in table view controller with less effort
- Animate expansion / collapsing of cells as you want (optional)
- Automatic scroll on cell expansion to make entire cell visible (optional)
- Subclass
AccordionTableViewCell
and overridesetExpanded:animated:
.
import AEAccordion
final class ReadmeTableViewCell: AccordionTableViewCell {
static let reuseIdentifier = "ReadmeTableViewCell"
@IBOutlet weak var headerView: HeaderView!
@IBOutlet weak var detailView: DetailView!
// MARK: Override
override func setExpanded(_ expanded: Bool, animated: Bool) {
super.setExpanded(expanded, animated: animated)
if animated {
UIView.transition(with: detailView, duration: 0.3, animations: {
self.detailView.isHidden = !expanded
}, completion: nil)
} else {
detailView.isHidden = !expanded
}
}
}
- Subclass
AccordionTableViewController
and configure cell height based onexpandedIndexPaths
.
import AEAccordion
final class ReadmeTableViewController: AccordionTableViewController {
override func viewDidLoad() {
super.viewDidLoad()
expandFirstCell()
}
func expandFirstCell() {
let firstCellIndexPath = IndexPath(row: 0, section: 0)
expandedIndexPaths.append(firstCellIndexPath)
}
// MARK: UITableViewDelegate
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return expandedIndexPaths.contains(indexPath) ? 200.0 : 50.0
}
}
-
.Package(url: "https://github.com/tadija/AEAccordion.git", majorVersion: 2)
-
github "tadija/AEAccordion"
-
pod 'AEAccordion'
This code is released under the MIT license. See LICENSE for details.