2016-08-28 21 views
0

xcodeには、単語と現在の時間の間に無限にフェードアウトするラベルがあります。ラベルを無限にフェードインし、別のテキストでフェードアウト

私はオンラインで見たことがあり、単一のフェードを見つけることができますが、スウィフトに新しいです。私はこれを私の必要性に適応させるのに苦労しています。

何か助けが素晴らしい、ありがとう!ここで

+0

解決策を見つけましたか? – Dravidian

答えて

1

はこれを行う方法の一例です:

@IBOutlet weak var label: UILabel! 

@IBAction func fade_out(sender: AnyObject) { 
    fade(label) 
} 

@IBAction func reset(sender: AnyObject) { 
    label.text = "label" 
} 

func fade(label : UILabel) { 
    UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: { 
     label.alpha = 0.0 
    }, completion: nil) 

    UIView.animateWithDuration(2.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: { 
     label.alpha = 1.0 
     label.text = String(NSDate()) 
    }, completion: nil) 
} 

私は何をすべきか、私はUIViewAnimationOptions.CurveEaseOutで最初のラベルをフェードアウトしてからUIViewAnimationOptions.CurveEaseInで今日の日付で再度フェードインということです。

Hereは私があなたのために作成したテストプロジェクトであり、私がどのように行ったかを見ることができます。

編集
それを無限大を行うにはあまりエレガントな方法は、CAAnimation使用するようになり、このように、ボタン

var timer = NSTimer() 
var b = false 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(ViewController.fade), userInfo: nil, repeats: true) 
} 

func fade() { 
     if b{ 
      UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: { 
       self.label.alpha = 0.0 
       self.label.text = "Label" 
       }, completion: nil) 

      UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: { 
       self.label.alpha = 1.0 
       self.label.text = String(NSDate()) 
       }, completion: nil) 

      b = false 
     } 
     else{ 
      UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: { 
       self.label.alpha = 0.0 
       self.label.text = String(NSDate()) 
       }, completion: nil) 

      UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: { 
       self.label.alpha = 1.0 
       self.label.text = "Label" 
       }, completion: nil) 

      b = true 
     } 

    } 
+0

これは、OPが無限と言っていたかもしれないと思います... – Dravidian

+0

フェードアニメーションと時間は私が必要とするものですが、ボタンではなく、2つの間に無限にフェードする手段がありますか? –

+0

"2つの間を無限にフェードイン"すると、フェードインとフェードインをしたいのですか? –

1

せずに、あなたはそれを行うことができます - >

class YourClass: UIViewController , ..{ 

    @IBOutlet weak var fadingLabel: UILabel! 
    var a = true 


    override func viewDidLoad() { 
      super.viewDidLoad() 


       NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(ViewController.swapText), userInfo: nil, repeats: true) 
       let anim : CABasicAnimation = CABasicAnimation(keyPath: "opacity") 
       anim.fromValue = 1 
       anim.toValue = 0 
       anim.duration = 0.5 
       anim.autoreverses = true 
       anim.repeatCount = Float.infinity 
       fadingLabel.layer.addAnimation(anim, forKey: "flashOpacity") 


    } 


    func swapText(){ 

      if a == true{ 

       fadingLabel.text = String(NSDate()) 
       a = false 
      }else{ 

       fadingLabel.text = String("My Text") 
       a = true 
      } 

    } 


} 

あなたが今行うべきことは、それに応じてanim.durationとNSTimer()のtimeIntervalを操作することです...

+1

ありがとう、これは良い方法です –

関連する問題