Word中的单词UILabel动画从左到右在swift中

时间:2015-12-30 08:06:42

标签: swift animation uilabel

我有一个带文字的uilabel,假设“这是一个标签。”我希望这个标签一次显示一个单词,从外部屏幕飞到UILable位置。 就像是 标签。 一个标签。 是一个标签。 这是一个标签。

我怎样才能获得这样的动画

2 个答案:

答案 0 :(得分:1)

我找到了一种方法可以按照自己的意愿去做。

class ViewController: UIViewController {

@IBOutlet var sampleLabel: UILabel!


var slogan = "This is a slogan."
var xdir = 250

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)


    let sampleLabelFrame = sampleLabel.frame
    let ypos = sampleLabelFrame.origin.y
    var sloganArray = slogan.componentsSeparatedByString(" ")
    sloganArray = sloganArray.reverse()
    var i = 0.0
    for word in sloganArray{
        let label: UILabel = UILabel(frame: CGRect(x: -100, y:ypos, width: 60, height: 20))
        label.text = word
        view.addSubview(label)


        let width = label.intrinsicContentSize().width
        var labelFramewidth = label.frame
        labelFramewidth.size.width = width
        label.frame = labelFramewidth
        self.xdir = self.xdir - Int(width)-4

        UIView.animateWithDuration(0.7, delay: i, options: .CurveEaseOut, animations: {
            var labelframe = label.frame
            labelframe.origin.x = CGFloat(self.xdir)



            label.frame = labelframe
            }, completion: { finished in


        })

        i+=0.5
    }

}


}

希望这可以帮助其他需要这样的人。

答案 1 :(得分:-1)

这可能会帮助您实现目标:

http://helpmecodeswift.com/animation/creating-animated-labels

编辑:

飞行标签代码:

    meme1.text = "Brace yourself!"
    meme1.font = UIFont.systemFontOfSize(25)
    meme1.textColor = UIColor.whiteColor()      // This is all just styling the Label
    meme1.sizeToFit()
    meme1.center = CGPoint(x: 200, y: -50)    // Starting position of the label

    view.addSubview(meme1)  // Important! Adding the Label to the Subview, so we can actually see it.

    //Animation options. Play  around with it.
    UIView.animateWithDuration(0.9, delay: 0.0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0.0, options: .CurveLinear, animations: {

        self.meme1.center = CGPoint(x: 200, y:50 )  // Ending position of the Label

        }, completion: nil)


    UIView.animateWithDuration(0.6, delay: 1.1, usingSpringWithDamping: 0.3, initialSpringVelocity: 0.0, options: .CurveLinear, animations: {

        self.meme1.center = CGPoint(x: 200, y:150+90 )



        }, completion: nil)

我自己没有经验,但它似乎完成了你的工作。您最终可以在屏幕外设置起点,并将其设置为动画到屏幕。这应该会产生预期的效果。