JXMarqueeView
一个强大、易于使用的跑马灯视图。
特点
- 自动启动跑马灯。 (当内容超出尺寸时,跑马灯自动启动。)
- 支持 UIView 及其子类。 (不仅限于 UILabel,您可以将视图自定义以开启跑马灯效果。)
预览
JXMarqueeType.left
:从右到左
JXMarqueeType.right
:从左到右
JXMarqueeType.reverse
:反向
要求
- Xcode 9.0+
- Swift 5.0+ (version >= 0.0.8)
安装
- 手动
- 下载源代码,将 JXMarqueeView.swift 文件拖入您的项目。
- CocoaPods
use_frameworks!
target '<Your Target Name>' do
pod 'JXMarqueeView'
end
使用方法
- contentMargin
两个视图之间的间隔,默认为12。
- frameInterval
分配给CADisplayLink的frameInterval属性,默认为1。
- pointsPerFrame
每次回调CADisplayLink所需多少个点。越大越快。
- contentView
您需要滚动显示的视图。
- SizeToFit
当您自定义复杂的内容视图时,需要重写func sizeThatFits(_ size: CGSize) -> CGSize
并返回正确的视图大小。
应用场景
//text
let label = UILabel()
label.textColor = UIColor.red
label.font = UIFont.systemFont(ofSize: 30, weight: .medium)
label.text = "abcdefghijklmnopqrstuvwxyz"
marqueeView.contentView = label
marqueeView.contentMargin = 50
marqueeView.marqueeType = .left
self.view.addSubview(marqueeView)
//picture
let imageView = UIImageView(image: UIImage(named: "haizeiwang.jpeg"))
imageView.contentMode = .scaleAspectFill
marqueeView.contentView = imageView
marqueeView.marqueeType = .reverse
self.view.addSubview(marqueeView)
自定义
使用代码实现contentView的默认复制方法
let archivedData = NSKeyedArchiver.archivedData(withRootObject: self)
let copyView = NSKeyedUnarchiver.unarchiveObject(with: archivedData) as! UIView
但如果视图有圆角或阴影,复制视图将失去它。因此,您应该实现协议JXMarqueeViewCopyable
函数func copyMarqueeView() -> UIView
。只需返回一个新的UIView实例。请参考示例中的CustomCopyView.swift
。