在Swift 3

时间:2018-02-27 04:02:01

标签: ios swift

在我的应用中,我会在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来处理溢出文本的解决方案,因此是新问题。

1 个答案:

答案 0 :(得分:0)

除此之外,你不能动画删除显示文本的头部并附加在最后一段文本上。即而不是动画标签移动使用计时器在计时器的每个刻度上添加一个字符(并删除一个)?然后,您将保证不会切断任何文本。