スクリーンセーバー・スライドショーもどき:テキストのフェードイン/アウト
以前Objective-c用に書いたもの(テキストアニメーション部分のみ)をSwift用に移植します。
テキストが一定時間ごとにフェードイン/アウトして、これもなんちゃってスクリーンセーバーです。スライドショーかな、むしろ。テキストを絵に変換してあげてもいけるかと。
QuartzCore.freamworkを使わなくてもいけます。
テキストラベルとボタンを設置して、結びつけておきます。
配列の数やタイマー用のカウントをもう少しちゃんとすれば、きちんとしたものができると思います。
下のですと最初の「いち」から「に」にかけての表示だけ、フェードインアウト処理の挙動が少しおかしいです。すみません。
import UIKit class ViewController: UIViewController { //フェードインアウト用タイマー var fadeInOutTimer: NSTimer? //テキストチェンジ用 var textTimer: NSTimer? //フェードインアウト用タイマー変数 var countTime = 0 //テキストチェンジ用変数 var textIndex: Int = 0 //テキストチェンジ用配列 let tenko = ["いち","に","さん","し","ご","ろく"] @IBOutlet weak var kabegami: UIImageView! @IBOutlet weak var sampleText: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. kabegami.image = UIImage(named: "TestAppPict1.png") sampleText.text = "いち" } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func timerBtn(sender: AnyObject) { //フェードインアウト用タイマー fadeInOutTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "cdTimer:", userInfo: nil, repeats: true) //テキストチェンジタイミング用タイマー textTimer = NSTimer.scheduledTimerWithTimeInterval(8, target: self, selector: "textload:", userInfo: nil, repeats: true) } //フェードインアウト用タイマー func cdTimer(timer : NSTimer) { countTime += 1 //countTime == 8はフェードインアウトのNSTimeIntervalの合計数 if countTime == 8 { fadein() countTime = 0 } } //テキストチェンジ用 func textload(timer : NSTimer) { textIndex += 1 //textIndex > 5の5は配列の数-1(配列の5番目までいったら最初の0番目に戻る) if textIndex > 5 { textIndex = 0 } //表示したいテキストを格納した配列の中で何番目(textIndex)を読み込むか let textArray = tenko[textIndex] //配列の中で該当するものをテキストラベルに表示 sampleText.text = textArray } //フェードイン処理 func fadein() { //4秒かけてフェードイン処理を行う var changeFadeIn: NSTimeInterval = 4 UIView.animateWithDuration( NSTimeInterval(changeFadeIn), animations: { //透明度が1になったらフェードアウト処理を行う self.sampleText.alpha = 1 } , completion: { (finished: Bool) in self.fadeout() }) } //フェードアウト処理 func fadeout(){ //4秒かけてフェードアウト処理を行う var changeFadeOut: NSTimeInterval = 4 UIView.animateWithDuration( NSTimeInterval(changeFadeOut), animations: { //透明度が0になったらフェードアウト処理終了 self.sampleText.alpha = 0 } , completion: { (finished: Bool) in }) } }