2016-12-04 90 views
-1

我想制作一个动画,如图中所示。在我给出的示例代码中,点击后的字符被覆盖。我怎样才能制作一幅如图所示的动画。UILabel动画文字

谢谢。

Letter animation

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 

} 
+0

您昨天已经问同样的问题。 –

+0

是的,我昨天写了。评论和答案是写在。但我无法解决这个问题。我知道这是违规,但我必须。 –

回答

2

一般:

  • 有(在你的例子所以他们的10),每个标签的1号和从底部区域的一类管理。
  • 不要复制的标签,但只是他们底部移动到行,同时还改变backgroundColortextColor
  • 创建一个管理该行的类。在行类中创建一个计算下一个字母的中心坐标的方法,当添加一个方法时。

当用户轻敲在底部的字母:

  • 向线对象的下一个字母的坐标。
  • 将该线坐标转换为底部区域的坐标空间。
  • 不要从底部区域的简单UIView动画的新坐标。
  • 当启动动画时,告诉线路一个新的字母即将到来。这将允许线对象将其现有的字母向左移动一点。
  • 当动画完成后,你可以从底部区域到线的视图层次中移动抽头UILabel