Comments (3)
It's pretty straightforward:
- You should be able to calculate the height (for opened state) for each cell individually.
- then
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var duration = 0.0
if cellHeights[indexPath.row] == kCloseCellHeight { // open cell
cellHeights[indexPath.row] = openHeightForRow(at: indexPath) /*kOpenCellHeight*/ // This value must be more than twice the size of kCloseCellHeight otherwise asserts will break loose!
cell.selectedAnimation(true, animated: true, completion: nil)
duration = 0.5
} else {// close cell
cellHeights[indexPath.row] = kCloseCellHeight
cell.selectedAnimation(false, animated: true, completion: nil)
duration = 1.1
}
UIView.animateWithDuration(duration, delay: 0, options: .CurveEaseOut, animations: { () -> Void in
tableView.beginUpdates()
tableView.endUpdates()
}, completion: nil)
}
- Don't forget to update your
containerView
's height (preferably incellForRowAtIndexPath...
) and if you want, you can even customize how many times your cell folds!:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCellWithIdentifier(cellID, forIndexPath: indexPath) as? FoldingCell else {
return UITableViewCell()
}
let height = messageHeightForCell(at: indexPath)
cell.containerHeightConstraint.constant = height
cell.itemCount = Int(round(height / 100.0)) // Decides number of folds for cell
return cell
}
- in case you have variable
itemCounts
(a.k.a. folds), in your cell:
override func animationDuration(itemIndex: NSInteger, type: AnimationType) -> NSTimeInterval {
var durations = [0.26]
for _ in 1...itemCount {
durations.append(0.2)
}
return durations[itemIndex]
}
well, I guess that's it!
from folding-cell.
I would be intrerested in a solution for this aswell 👍
from folding-cell.
nice
from folding-cell.
Related Issues (20)
- Custom FoldingCell Class not working in storyboards when using Carthage HOT 1
- Contents disappear when scrolling HOT 1
- Slow Animation HOT 2
- Issue in Folding cell while expanding in takeSnapshot HOT 3
- Width compressing HOT 1
- compilation issues with swift 4.2
- How to expand all the cells at first time? HOT 1
- How do you close all open cells programmatically? HOT 1
- Create new cell?
- Swift UI compatibility HOT 3
- fatalError("set foregroundViewTop or containerViewTop outlets in storyboard") HOT 7
- Rendering (screen width) issue on iPad HOT 1
- Dark mode on folding cell?
- TableView Automatic Dimension in Height for row HOT 2
- Index out of range: file HOT 2
- 2 Custom tableviewCells in the same TableView HOT 1
- Not able to set dynamic cell height HOT 1
- Want to use in swift ui
- Documentation the "5.5 Control if the cell is open or closed" doesn't exist
- 'RotatedView' is ambiguous for type lookup in this context
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from folding-cell.