swift 上的标签文本如何跑马灯?

how Marquee text of label on swift?

我想在 Swift 中创建选取框标签。我尝试了一些代码,但无法正常工作。

我也可以用动画做到这一点,但我无法重复它。

我也试过

任何帮助将不胜感激。

我不知道为什么我得到 2 - ?!????

我尝试了很多东西。那已经不重要了...

我在 5 分钟前发现了这个,这就是我使用动画而不是选取框的答案。但是 iOS 选框是个棘手的问题!

here is the link that solved my repeating animation problem

我使用了这个代码并且它有效!也想帮助别人。

在 ViewdidLoad 上:

  if let aLabel = self.txtAmarFull {
        aLabel.pushTransition(3)

    }

正文:

extension UIView {
func pushTransition(duration:CFTimeInterval) {
    let animation:CATransition = CATransition()
    animation.timingFunction = CAMediaTimingFunction(name:
        kCAMediaTimingFunctionEaseInEaseOut)
    animation.type = kCATransitionMoveIn
    animation.subtype = kCATransitionFromLeft
    animation.duration = duration
    animation.repeatCount = 99
    self.layer.addAnimation(animation, forKey: kCATransitionPush)
}

我的标签名称是:txtAmarfull

我找到了更好的解决方案!

我将两种不同的方法结合在一起

这里使用 swift 中的这段代码,您可以使用终极重复进行 Marquee,而且非常简单!只需将您的标签放在显示视图的一侧。

 UIView.animateWithDuration(8.0, delay:0, options: [.Repeat], animations: {   
        self.YOURLABELNAME.frame = CGRectMake(self.YOURLABELNAME.frame.origin.x - 500, self.YOURLABELNAME.frame.origin.y - 0, self.YOURLABELNAME.frame.size.width, self.YOURLABELNAME.frame.size.height)
        }, completion: nil)

使用一个可以Marquee up 其内容的标签非常简单。 只需在您的项目中添加 MarqueeLabel 个 pod。

Swift:

pod 'MarqueeLabel/Swift'

然后 select 您希望对其执行选取框的标签,并在身份检查器中向其添加自定义 Class 选取框标签。

就是这样。

这是在标签中添加选取框的最简单方法。添加 Custom Class MarqueeLabel 后,如果您希望标签内容的最后一个字符和第一个字符之间有一些间距,则:

第 1 步:Select 标签。

第 2 步:转到属性检查器,然后将 fadeLength 属性值增加到您想要的程度。将值 10 应用于它就足够了。

如果您希望自定义更多,请将自定义 class MarqueeLabel 添加到 Label,然后在您的代码中取出该 Label 的出口,并按照您想要的方式对其进行自定义。

您代码中该标签的出口应如下所示:

@IBOutlet var YOURLABELNAME: MarqueeLabel!

如果不是,则重新开始,首先将自定义 class 添加到标签,然后在代码文件中获取其出口。

检查此代码

var check = true
    var speed = 2
    var stopWidth = 200.0
override func viewDidLoad() {
        label.center.x = view.center.x // Place it in the center x of the view.
        label.center.x -= view.bounds.width // Place it on the left of the view with the width = the       
 Timer.scheduledTimer(timeInterval: TimeInterval(speed),
                             target: self,
                             selector: #selector(selectCityViewController.sliderAnimationTime),
                             userInfo: nil,
                             repeats: true)


    }

    @objc func sliderAnimationTime() {
        // do what should happen when timer triggers an event
        UIView.animate(withDuration: TimeInterval(speed), delay: 0, options: [.curveEaseOut], animations: {
            if self.check {
                self.check = false
                self.label.center.x -= self.view.bounds.width - CGFloat(self.stopWidth)
                self.view.layoutIfNeeded()
            }else{
                self.check = true
                self.label.center.x += self.view.bounds.width - CGFloat(self.stopWidth)
                self.view.layoutIfNeeded()
            }

        }, completion: nil)
    }