菜鸟教程小白 发表于 2022-12-13 16:59:43

ios - 使用表格 View 单元格折叠和弹跳动画


                                            <p><p>不确定是否有人看过这个开源:<a href="https://github.com/Ramotion/folding-cell" rel="noreferrer noopener nofollow">https://github.com/Ramotion/folding-cell</a> ,但我正在尝试使用带有表格 View 单元格的弹跳动画来完成折叠/展开,就像上面链接中显示的那样。目前我正在更改单元格的高度并执行 tableView.beginUpdates() 和 tableView.endUpdates()。但结果不是很好。我还尝试更改单元格 subview 的顶部约束。这确实提供了更好的动画,但由于单元格的高度保持不变,因此此方法不会使单元格反弹。任何人都知道如何完成这种类型的动画? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>即使这个问题的答案迟到了。让这对任何新观众都有帮助,这是一个带有淡入淡出和反弹的漂亮动画。</p>
<p>将此代码添加到 <strong>UITableViewDelegate</strong></p> 的 <code>tableView willDisplayCell</code> 方法中
<p><strong> objective-C </strong></p>
<pre><code> cell.transform = CGAffineTransformMakeTranslation(0, cell.frame.size.height);
cell.alpha = 0;
   
    [UIView animateWithDuration:0.4 delay:0.03 * indexPath.row
usingSpringWithDamping:0.8 initialSpringVelocity:0.1
options:UIViewAnimationOptionCurveEaseInOut animations:^{
      
      cell.alpha = 1;
      cell.transform = CGAffineTransformMakeTranslation(0, 0);
      
    } completion:nil];
</code></pre>
<p><strong>Swift 版本</strong></p>
<pre><code>cell.transform = CGAffineTransform(translationX: 0, y: rowHeight)
cell.alpha = 0

      UIView.animate(
            withDuration: 0.4,
            delay: 0.03 * Double(indexPath.row),
            usingSpringWithDamping: 0.8,
            initialSpringVelocity: 0.1,
            options: [.curveEaseInOut],
            animations: {

                cell.alpha = 1
                cell.transform = CGAffineTransform(translationX: 0, y: 0)

      })
</code></pre>
<p>我还添加了淡入淡出效果,如果不需要,请删除动画中包含的 alpha 部分。</p>
<blockquote>
<p>The <strong>delay</strong> calculation makes sure each cell at each row has a
different delay, this makes the animation more viewable at the lower
portions of the tableview. Setting a higher delay value would make it
profound at the topmost cells also.</p>
<p><strong>SpringWithDamping</strong> - essentially a bouncing power. Use value of 1 for no bouncing at
all and values closer to 0 to increase oscillation.</p>
<p><strong>SpringVelocity</strong> - Value of 1 corresponds to the total animation
distance travelled within a second.</p>
<p><strong>options</strong> - options for animating views. We are using curveEaseInOut to
cause the animation to begin slowly, accelerate through the middle of
it&#39;s duration, and then slow again before completing.</p>
</blockquote></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用表格 View 单元格折叠和弹跳动画,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37800745/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37800745/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用表格 View 单元格折叠和弹跳动画