Ios 使用单独的`文本无限地淡入和淡出标签`

Ios 使用单独的`文本无限地淡入和淡出标签`,ios,swift,xcode,label,Ios,Swift,Xcode,Label,我在xCode中有一个标签,我想在一个单词和当前时间之间无限衰减 我已经在网上看过了,可以找到一个淡色,但我对Swift是新手,所以我正在努力适应我的需要 任何帮助都将是惊人的,谢谢 下面是一个如何执行此操作的示例: @IBOutlet weak var label: UILabel! @IBAction func fade_out(sender: AnyObject) { fade(label) } @IBAction func reset(sender: AnyObject) {

我在xCode中有一个标签,我想在一个单词和当前时间之间无限衰减

我已经在网上看过了,可以找到一个淡色,但我对Swift是新手,所以我正在努力适应我的需要


任何帮助都将是惊人的,谢谢

下面是一个如何执行此操作的示例:

@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
淡入今天的日期

是我为您创建的一个测试项目,您可以看到我是如何完成的

编辑
要做到无限远,你可以这样做,不需要一个按钮

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
        }

    }

以下是如何执行此操作的示例:

@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
淡入今天的日期

是我为您创建的一个测试项目,您可以看到我是如何完成的

编辑
要做到无限远,你可以这样做,不需要一个按钮

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
        }

    }

一种非常优雅的方法是使用动画->

  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
          }

     }


 } 

您现在所要做的就是相应地操纵NSTimer()中的
动画持续时间
和时间间隔…

一种非常优雅的方法是使用动画

  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
          }

     }


 } 

你现在要做的就是相应地操纵NSTimer()中的
anim.duration
和timeInterval…

淡入淡出的动画和时间是我所需要的,但是有没有一种方法可以在两者之间无限淡入淡出,而不是按钮?所谓“两个之间无限淡入淡出”,你的意思是想在它们之间淡入淡出吗?是的,因此,它将在两者之间无限衰减。这是我一直在努力解决的问题。对不起,如果原稿不清楚的话post@HarryCollins,添加了一个示例,说明如何在不使用按钮的情况下无限地执行此操作press@Dravidian,你说得对,帖子现在更新了淡入淡出的动画和时间是我需要的,但是有没有办法在两者之间无限淡出呢“在两者之间无限衰减“你的意思是你想在它们之间淡入淡出吗?是的,所以它会在两者之间无限淡出。”。这是我一直在努力解决的问题。对不起,如果原稿不清楚的话post@HarryCollins,添加了一个示例,说明如何在不使用按钮的情况下无限地执行此操作press@Dravidian,你说的对,帖子现在更新了,你找到解决方案了吗?你找到解决方案了吗?谢谢,这是一种很好的方式谢谢,这是一种很好的方式