我在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每隔几秒更新一次,但我只希望我的标签在重复之前更新。
这已经在我脑中吹了一个洞。任何建议将不胜感激。
答案 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
}