如何在IOS中使用Swift实现跑马灯标签

10

如何在iOS中实现MarqueeLabel。我发现这里有Objective-C的例子,但我使用Swift。


尝试在Swift 3.0中使用轻量级的跑马灯标签库 https://github.com/Sahilberi/SwiftyScrollingLabel - Sahil
6个回答

17

要在Swift中创建跑马灯效果,需要将以下类添加到您的项目中:https://github.com/cbpowell/MarqueeLabel

首先,将pod添加到项目中:pod 'MarqueeLabel'

然后,在你的项目中执行 pod update 命令。

接下来,在工作文件中导入pod: import MarqueeLabel

在Storyboard中创建一个标签,并将自定义类设置为 MarqueeLabel。 然后:

@IBOutlet weak var marqueeLabel:MarqueeLabel!

在ViewDidLoad中添加以下内容:

marqueeLabel.type = .Continuous
marqueeLabel.scrollDuration = 5.0
marqueeLabel.animationCurve = .EaseInOut
marqueeLabel.fadeLength = 10.0
marqueeLabel.leadingBuffer = 30.0
marqueeLabel.trailingBuffer = 20.0

4

请使用MarqueeLabel,它非常易于使用和实现。

如果您正在使用Pod,则可以集成并尝试以下示例代码:

Objective-C:

pod 'MarqueeLabel'

MarqueeLabel *lengthyLabel = [[MarqueeLabel alloc] initWithFrame:aFrame duration:8.0 andFadeLength:10.0f];

Swift:

pod 'MarqueeLabel/Swift'

var lengthyLabel = MarqueeLabel.init(frame: aFrame, duration: 8.0, fadeLength: 10.0)

另一个使用 Web View 的解决方案:
String marquee = "<html><body><marquee>This is sample marquee</marquee></body></html>"
webview.loadData(marquee, "text/html", null);


这是结果:

enter image description here


2
使用可以滚动其内容的标签非常简单。只需在您的项目中添加MarqueeLabel库即可。
Swift代码示例:
pod 'MarqueeLabel/Swift'

然后选择您要执行Marquee的标签,并在Identity Inspector中将Custom Class MarqueeLabel添加到其中。
就这样。
这是添加标签中跑马灯最简单的方法。添加自定义类MarqueeLabel后,如果您希望在标签内容的最后一个字符和第一个字符之间有一些间隔,则:
步骤1:选择标签。
步骤2:转到属性检查器,然后增加fadeLength属性值,以您想要的值为基准。将值10应用到它上面就足够了。
如果您希望进行更多自定义,请将自定义类MarqueeLabel添加到标签中,然后在代码中获取该标签的输出并按您想要的方式进行自定义。
您的代码中该标签的输出应如下所示:
@IBOutlet var YOURLABELNAME: MarqueeLabel!

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

2

下载以下链接的github跑马灯标签演示:

https://github.com/cbpowell/MarqueeLabel-Swift

然后按照以下步骤进行:

  1. 下载上述github项目

  2. 从“classes”中复制Marqueelabel.swift文件

  3. 将Marqueelabel.swift文件粘贴到您的项目中

  4. 将任何UILabel设置为MarqueeLabel类型

    例如:@IBOutlet weak var demoLabel1: MarqueeLabel!

  5. 运行您的项目


我修复了错误,这些错误是Swift 1和2之间的区别。感谢您的帮助。 - Munkhbold Enkhtur

0

该库已被弃用。 - Apan

0
在 Apple tvOS 中,可以使用 MarqueeLabel 来设置速度。

https://github.com/cbpowell/MarqueeLabel

之前在我的项目中设置了速度

videoTitleLabel.speed = .duration(25.0)

现在我把25.0改成了10

videoTitleLabel.speed = .duration(10)

现在它移动得更快了


这个图书馆在重新启动滚动时出现了问题。 - undefined
@nitin.agam 你可以自己调用 restart 方法。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接