JXMarqueeView 0.1.1

JXMarqueeView 0.1.1

pujiaxin 维护。



  • 作者
  • pujiaxin33

JXMarqueeView

languages platform cocoapods

一个强大、易于使用的跑马灯视图。

中文博客介绍

特点

  • 自动启动跑马灯。 (当内容超出尺寸时,跑马灯自动启动。)
  • 支持 UIView 及其子类。 (不仅限于 UILabel,您可以将视图自定义以开启跑马灯效果。)

预览

JXMarqueeType.left:从右到左

left.gif

JXMarqueeType.right:从左到右

right.gif

JXMarqueeType.reverse:反向

reverse.gif

要求

  • Xcode 9.0+
  • Swift 5.0+ (version >= 0.0.8)

安装

  1. 手动
    • 下载源代码,将 JXMarqueeView.swift 文件拖入您的项目。
  2. 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

图片案例预览

picture.gif

自定义案例预览

poetry.gif