如何为 tableview 单元格执行放大、缩小动画?

如何解决如何为 tableview 单元格执行放大、缩小动画?

我想知道如何重新创建此动画?前 2 个单元格保持原样,但只有索引 2 中的单元格有动画。

现在我正在使用

重新创建它
let rotationTransform = CATransform3DTranslate(CATransform3DIdentity,-500,10,0)
cell.layer.transform = rotationTransform

为什么这看起来和感觉不像 gif 中的那样,是否有任何 pod 或某种方法可以实现这一点?

附加信息:第一个单元格只是一个简单的单元格,第二个单元格是一个集合视图,接下来的单元格是重复的单元格。滑动目前正在使用滑动手势,我只需要有关如何重新创建此放大、缩小动画的信息。

任何帮助将不胜感激。 谢谢

编辑:我尝试将问题上的 gif 大小更改为中等大小,但没有播放,因此我再次将其更改为正常大小。

Gif Anim

解决方法

我实际上想出了一个简单的方法来执行这个动画。可能有更好的方法来做到这一点,但以防万一将来有人需要帮助。

我们为zoomIn和zoomOut编写了2个函数(可以在任何地方使用)

func zoomOut(view : UIView,duration : Double,delay : Double)
{
    UIView.animate(withDuration: duration,delay: delay,options: UIView.AnimationOptions.curveEaseIn,animations: {
        view.transform = CGAffineTransform.identity.scaledBy(x: 0.95,y:  0.95)
     })
}
func zoomIn(view : UIView,animations: {
        view.transform = CGAffineTransform.identity
     })
}

然后我们编写运动函数(可以在任何地方使用)

func movementAnimation(duration:Double,X:CGFloat,Y:CGFloat,item:UIView)
{
    UIView.animate(withDuration: duration) {
      item.transform = CGAffineTransform(translationX: X,y: Y)
        
    }
}

最后我们将这两个结合起来得到一个相似的动画!

zoomOut(view: Table,duration: 0.1,delay: 0)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
        movementAnimation(duration: 0.2,X: -500,Y: 0,item: self.Table)
            }
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
        movementAnimation(duration: 0,X: 500,item: self.Table)
        movementAnimation(duration: 0.2,X: 0,item: self.Table)
            }
zoomIn(view: self.Table,delay: 0.6)

这里首先将视图缩小(将比例缩小到 0.95),然后以 0.2 秒的持续时间将其移到屏幕外。一旦它位于屏幕外,它立即以 0 秒的持续时间移到屏幕右侧。然后以 0.2 秒的持续时间将其移回原始位置。现在我们调用 zoomIn 将视图恢复到其原始大小,持续时间为 0.1 秒。 0.5 秒是 zoomOut + moveOut + moveIn 函数所用的总时间。

最后重新加载表格

DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.Table.reloadData()
}

希望这能帮助某人并感谢“Nikunj Kumbhani”的 pod 创意!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?