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
}
我在 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
}