我有一個帶有文本的uilabel,假設「這是一個標籤」。我希望這個標籤一次顯示一個字,從屏幕外部飛到UILable位置。 類似 的標籤。 一個標籤。 是一個標籤。 這是一個標籤。Word by Word UILabel動畫從左到右在swift中
我怎樣才能得到這樣的動畫
我有一個帶有文本的uilabel,假設「這是一個標籤」。我希望這個標籤一次顯示一個字,從屏幕外部飛到UILable位置。 類似 的標籤。 一個標籤。 是一個標籤。 這是一個標籤。Word by Word UILabel動畫從左到右在swift中
我怎樣才能得到這樣的動畫
這可以幫助你的方式來實現你想要什麼:
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完成你的工作。您最終可以在屏幕之外選擇起始點,並讓它在屏幕上生成動畫。這應該會產生預期的效果。
我發現了一種方法可以按我的意願去做。
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
}
}
}
希望這可以幫助其他人需要這樣的東西。