Swift 3 Marquee 标签通知在重复之前或在起始位置

Swift 3 Marquee Label Notification Before Repeats or At Home Position

我在 Swift 3 中使用 Marquee 标签,它工作正常。唯一的问题是我遇到了以下问题:

我试图找出标签 returns 何时到达起始位置。当文本 returns home 不在屏幕上时,这就是我想更新数据字符串的时候。

如果我尝试在滚动过程中更新字符串,它会自动停止并重置。 dataString 的长度也是可变的,所以我不能使用定时器或类似的东西。

我已经通读了这里的所有内容Marquee Label

这是我用来设置和启动标签的代码:

feedLabel.text = dataString
    feedLabel.type = .continuous
    feedLabel.speed = .rate(70)
    feedLabel.fadeLength = 80.0
    feedLabel.leadingBuffer = 1300.0
    feedLabel.trailingBuffer = 1300.0
    feedLabel.labelWillBeginScroll()

我的数据字符串每隔几秒更新一次,但我只希望我的标签在它重复之前更新。

这让我的脑子炸了个洞。任何建议将不胜感激。

您可以从 MarqueeLabel 创建新的继承 class 并覆盖 labelReturnedToHome 函数:

class CustomMarqueLabel : MarqueeLabel {
    open var returned : ((Bool)->Void)?
    override func labelReturnedToHome(_ finished: Bool) {
        super.labelReturnedToHome(finished)
        if returned != nil {
            returned!(finished)
        }
    }
}

然后像这样使用:

let lengthyLabel = CustomMarqueLabel(frame: CGRect(x: 20, y: 40, width: 200, height: 20), duration: 0.5, fadeLength: 10.0)
lengthyLabel.returned = {completed in
            //label returned to begining
        }