重复或在家位置之前的Swift 3选框标签通知

时间:2017-01-29 15:49:49

标签: swift swift3 uilabel marquee

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

我试图找出标签何时返回原位。当文本返回home时,它在屏幕外,这是我想更新dataString的时候。

如果我在滚动过程中尝试更新字符串,它会自动停止并重置。 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()

我的dataString每隔几秒更新一次,但我只希望我的标签在重复之前更新。

这已经在我脑中吹了一个洞。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以从MarqueeLabel创建新的继承类并覆盖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
        }