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

iOS-如何修复表格视图单元格中的此动画,使其向左移动,然后再返回,ios,swift,uitableview,animation,uikit,Ios,Swift,Uitableview,Animation,Uikit,目标是让第一个表视图单元格内容向左移动一段时间,然后再向后移动 更大的目标是将单元格的内容视图稍微向左反弹,并在红色框中反弹,然后将单元格恢复正常。 尽管与另一个SO问题类似,但答案并未揭示如何做到这一点。另外,这个问题将适用于任何想将单元格内容临时向左移动然后再向后移动的人。因此,这就是为什么这是一个单独的问题 环境是iOS 11+和iPhone应用程序 我创建了一个新的表视图项目,该项目通过变换设置contentView移动的动画。然而,它似乎不能在正常位置远程启动,然后根据需要移动。内容从

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

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

环境是iOS 11+和iPhone应用程序

我创建了一个新的表视图项目,该项目通过变换设置contentView移动的动画。然而,它似乎不能在正常位置远程启动,然后根据需要移动。内容从居中开始,然后移动到位

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


项目:

我稍微重写了您的代码。您正在对内容视图应用变换,文档建议在移动位置时设置
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() }
        })
    }

我重写了你的代码。您正在对内容视图应用变换,文档建议在移动位置时设置
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
仍然具有从左侧滑入的行为。我需要它正常启动,然后向左推一点。。然后最终回到正常状态:我看到你编辑了它。我会查一查。谢谢,老虎霍布斯:)你做得很好@Hobbes the Tige谢谢!我将您的解决方案放在主分支中,并注意到它来自您。:)很好的改变,谢谢你的回复
self.contentView.transform=.identity
仍然具有从左侧滑入的行为。我需要它正常启动,然后向左推一点。。然后最终回到正常状态:我看到你编辑了它。我会查一查。谢谢,老虎霍布斯:)你做得很好@Hobbes the Tige谢谢!我将您的解决方案放在主分支中,并注意到它来自您。:)