Ios UILabel动画字母

Ios UILabel动画字母,ios,swift,animation,swift3,uilabel,Ios,Swift,Animation,Swift3,Uilabel,我正试图制作一个如图所示的动画。在我给出的示例代码中,单击后的字符被覆盖。我怎样才能制作像图中那样的动画 多谢各位 一般而言: 每个标签有1个字母(在你的例子中有10个),并从底部区域的类中管理它们 不要复制标签,只需将标签从底部移动到行,同时更改backgroundColor和textColor 创建一个管理行的类。在line类中创建一个方法,用于在添加字母时计算下一个字母的中心坐标 当用户点击底部的字母时: 向线条对象询问下一个字母的坐标 将该线坐标转换为底部区域的坐标空间 从底部区

我正试图制作一个如图所示的动画。在我给出的示例代码中,单击后的字符被覆盖。我怎样才能制作像图中那样的动画

多谢各位

一般而言:

  • 每个标签有1个字母(在你的例子中有10个),并从底部区域的类中管理它们
  • 不要复制标签,只需将标签从底部移动到行,同时更改
    backgroundColor
    textColor
  • 创建一个管理行的类。在line类中创建一个方法,用于在添加字母时计算下一个字母的中心坐标
当用户点击底部的字母时:

  • 向线条对象询问下一个字母的坐标
  • 将该线坐标转换为底部区域的坐标空间
  • 从底部区域到新坐标执行一个简单的
    ui视图
    动画
  • 当动画启动时,告诉行一个新字母即将到来。这将允许line对象将其现有字母向左移动一点
  • 动画完成后,可以将点击的
    UILabel
    从底部区域的视图层次移动到线条

你昨天已经问了同样的问题。是的,我昨天写的。评论和回答都是书面的。但我无法回答这个问题。我知道这是违法行为,但我必须这么做。
func letterTapAction(sender: UITapGestureRecognizer) {
    for label in lettesLabel {
        if sender.view == label {
            copyLabelAndAnimate(fromLabel: label)
        }
    }
}

func copyLabelAndAnimate(fromLabel: UILabel) {
    let copiedLabel = UILabel.init(frame: CGRect(x: fromLabel.frame.minX, y: fromLabel.frame.minY ,width: fromLabel.bounds.width, height: fromLabel.bounds.height))
    copiedLabel.text = fromLabel.text!
    copiedLabelsTagCounter += 1
    copiedLabel.tag = copiedLabelsTagCounter
    copiedLabel.font = UIFont.init(name: "Noteworthy-Bold", size: 28.0)
    view.addSubview(copiedLabel)


    //UIView.removeFromSuperview(view.viewWithTag(101)!)

    UIView.animate(withDuration: 0.2, animations: {
        copiedLabel.frame.origin = CGPoint.init(x: self.view.frame.size.width / 2 + CGFloat(self.spaceForCopiedLabels), y: self.view.frame.minY + CGFloat(15))
    })

    if lettersThatNeedLessSpace.characters.contains(copiedLabel.text!.characters.first!) {
        spaceForCopiedLabels -= 8
    }

    spaceForCopiedLabels += 25

}