【发布时间】:2019-03-30 18:39:23
【问题描述】:
在我的应用程序中,我在 UILabel 中显示音轨的标题。根据名称字符串的长度,它可以溢出标签(...)并且不可见。
为了改善这一点,我想让标签水平滚动(这在其他地方称为marquee animation);但是,我希望它仅在文本溢出视图时进行动画处理(因此,如果标题很短,则不会水平滚动)并显示整个名称。
在我看来,我运行:
override func viewDidLoad() {
episodeTitle.text = testName
// scroll episode name test
UIView.animate(withDuration: 12.0, delay: 1, options: ([.curveLinear, .repeat]), animations: {() -> Void in
self.episodeTitle.center = CGPoint(x: 0 - self.episodeTitle.bounds.size.width / 2, y: self.episodeTitle.center.y)
}, completion: { _ in })
}
@IBOutlet var episodeTitle: UILabel!
当我运行它时,它要么切断视图外的部分(如果 Line Break 设置为 truncate,或者如果我将 Lines 更改为 2 并将其设置为换行,则滚动两行)。
有没有办法以编程方式处理整个文本字符串而不切断它?
注意:我确实看到了与选取框行为相关的其他问题,但没有找到不需要 3P Pod 来处理溢出文本的解决方案,因此提出了新问题。
【问题讨论】:
-
这是MarqueeLabel的一个很好的实现@