【问题标题】:How can I make an UILabel appear and disappear 5 times?如何让 UILabel 出现和消失 5 次?
【发布时间】:2016-10-29 17:58:44
【问题描述】:

当我按下一个按钮时,会出现一个带有标签的视图。然后我希望标签消失并重新出现 5 次(带有动画),每次标签以不同的文本重新出现。 我似乎无法获得任何代码来为 UILabel 设置动画并更改文本。我试过这个。但是,当我按下按钮时,循环和动画会立即发生。

持续时间如下:0.3、0.6、0.9、1.2、1.5

for i in 1...5 {

            infoViewMsgLbl.text = randomReward(real: i) // This retrives a String

            UIView.animate(withDuration: ((1.5/5)*Double(i)), delay: 0.0, options: .allowAnimatedContent, animations: { 
                self.infoViewMsgLbl.alpha = 0
            }, completion: { finished in
                UIView.animate(withDuration: ((1.5/5)*Double(i)), animations: { 
                    self.infoViewMsgLbl.alpha = 1
                })
            })

            print("in the loop: ", i)
        }

【问题讨论】:

  • 用你的相关代码更新你的问题,并清楚地解释你在使用代码时遇到了什么问题。
  • @rmaddy 我已经更新了问题。

标签: ios swift xcode uiview


【解决方案1】:

您正在更改duration,但将delay 保留为0(即立即开始)。在这些情况下,您可以反过来做,更改 delay 并保持 duration 不变。

但鉴于您想更改标签text,我可能会改用计时器:

var index = 1
Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) { [weak self] timer in
    self?.infoViewMsgLbl.alpha = 0
    self?.infoViewMsgLbl.text = self?.randomReward(real: index)
    index += 1
    if index > 5 { timer.invalidate() }
    UIView.animate(withDuration: 0.3) {
        self?.infoViewMsgLbl.alpha = 1
    }
}

【讨论】:

  • 完美运行,没想到使用计时器,谢谢。
【解决方案2】:

可能是这样的:

func animate(alpha: CGFloat, start: Int, end: Int) {

    infoViewMsgLbl.text = randomReward(real: Int(start/2)) // This retrives a String

    UIView.animate(withDuration: 0.3, animations: {
        self.infoViewMsgLbl.alpha = alpha
    }, completion: { success in

        if start + 1 <= end {
            self.animate(alpha: alpha == 1.0 ? 0.0 : 1.0, start: start + 1, end: end)
        }
    })
}

用法:

animate(alpha:0.0, start: 0, end: 10)  //would flash a total of 5 times

请注意,持续时间保持 0.3,因为它在每增加 0.3 秒后才会调用下一个循环。

【讨论】:

  • 该功能有效。但是,它在完成时会留下 alpha = 0 的标签。
  • 你可以运行 11 次。但我同意 Rob 的计时器实现可能是解决这个问题的更好方法。
猜你喜欢
  • 2021-08-19
  • 2019-07-15
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2018-12-17
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多