2015-12-30 26 views
-1

我有一個帶有文本的uilabel,假設「這是一個標籤」。我希望這個標籤一次顯示一個字,從屏幕外部飛到UILable位置。 類似 的標籤。 一個標籤。 是一個標籤。 這是一個標籤。Word by Word UILabel動畫從左到右在swift中

我怎樣才能得到這樣的動畫

回答

-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) 

我自己沒有經驗,但它se ems完成你的工作。您最終可以在屏幕之外選擇起始點,並讓它在屏幕上生成動畫。這應該會產生預期的效果。

0

我發現了一種方法可以按我的意願去做。

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 
    } 

} 


} 

希望這可以幫助其他人需要這樣的東西。