我想知道如何在UILabel
中逐个淡出文字。
例如:
label.text =“abcdefg”,我想让文字逐一淡出 - > 'a','b','c','d','e','f','g'分别淡出。
我怎么能这样做?
感谢您的所有答案,我想澄清一下我希望动画淡出,比如UIViewAnimationOptions.CurveEaseInOut。
谢谢!
答案 0 :(得分:6)
使用2个标签并反复淡入淡出,从每个淡入淡出之间删除每个字符。
或者,使用视图捕获SDK创建具有不同文本内容的标签图像,然后通过一些过渡动画显示图像。
答案 1 :(得分:0)
您可以使用NSTimer
执行此操作,并从其干预字符串中删除最后一个字母。例如,你可以这样做:
淡入淡出文本动画的简单类
class TextFadeAnimation {
var text: String
var timer: NSTimer?
var block: ((text: String) -> Void)?
init(text: String) {
self.text = text
}
func startAnimation(resultTextBlock block: (text: String) -> Void) {
self.block = block
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("fadeOut"), userInfo: nil, repeats: true)
}
func stopAnimation() {
if timer != nil {
timer!.invalidate()
}
}
@objc private func fadeOut() {
if count(text) > 1 {
text = text.substringToIndex(text.endIndex.predecessor())
block!(text: text)
} else {
timer!.invalidate()
block!(text: "")
}
}
}
使用ViewController中的示例
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
var textFadeAnimation: TextFadeAnimation?
override func viewDidLoad() {
super.viewDidLoad()
textFadeAnimation = TextFadeAnimation(text: "abcdefg")
textFadeAnimation!.startAnimation(resultTextBlock: { (text: String) -> Void in
self.label.text = text
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}