iOS - 如何修复表格视图单元格中的此动画向左然后再次返回

Posted

技术标签:

【中文标题】iOS - 如何修复表格视图单元格中的此动画向左然后再次返回【英文标题】:iOS - How To Fix This Animation In Table View Cell To Go Left and Then Back Again 【发布时间】:2019-04-10 14:42:23 【问题描述】:

目标是让第一个表格视图单元格内容向左移动一段时间,然后再返回。

更大的目标是我们将单元格的内容视图稍微向左反弹并在红色框中反弹,然后将单元格恢复正常。 虽然类似于另一个 SO question,但答案并未揭示如何做到这一点。另外,这个问题适用于任何想要动画将单元格内容暂时向左移动然后再次移动的人。因此,这就是为什么它是一个单独的问题。

环境为 ios 11+ 和 iPhone 应用。

我创建了一个新的 Table View 项目,该项目正在通过变换为 contentView 移动设置动画。但是,它似乎并没有从正常位置远程开始,然后根据需要移动。内容从居中开始,然后移动到适当的位置。

如何让 contentView 向左移动一点,然后再回到正常位置?

项目: https://github.com/mikefinney/peekabooswipe

【问题讨论】:

【参考方案1】:

我稍微重写了你的代码。您正在将 transform 应用于内容视图,文档建议在移动位置时为 center 属性设置动画。

func applyCellAnimations() 

        let originalCenter = contentView.center
        let offsetCenter = originalCenter.applying(.init(translationX: -44, y: 0))

        animateToCenter(offsetCenter) 
            DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: 
                self.animateToCenter(originalCenter)
            )
        
    

    private func animateToCenter(_ center: CGPoint, completionHandler: @escaping () -> Void =  ) 

        layoutIfNeeded()

        UIView.animate(
            withDuration: 1,
            delay: 0,
            options: [.curveEaseInOut],
            animations: 
                self.contentView.center = center
        , completion:  didComplete in
            if didComplete  completionHandler() 
        )
    

【讨论】:

一个很好的改变,感谢您的回复。 self.contentView.transform = .identity 仍然具有从左侧滑入的这种行为。我需要它开始正常,然后向左轻推一点......然后最终恢复正常:youtu.be/R_cSstICOko 我看到你编辑了它。我会检查一下。谢谢,老虎霍布斯:) 你做得很好@hobbes-the-tige 谢谢!我将您的解决方案放在主分支中,并指出它来自您。 :)

以上是关于iOS - 如何修复表格视图单元格中的此动画向左然后再次返回的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式删除表格视图单元格中的 UIView?

如何在编辑表格视图单元格中的文本字段时重新加载所有表格视图单元格 - iOS Swift

如何在表格视图单元格中的视图内设置视图的角半径?

iOS:自定义表格视图单元格中的约束

iOS - 表格视图单元格中的自动布局问题

IOS/Objective-C:检测自定义表格视图单元格中的按钮按下?