MarqueeLabel
@MainActor
open class MarqueeLabel : UILabel
简易的跑马灯 label 控件,在文字超过 label 可视区域时会自动开启跑马灯效果展示文字,文字滚动时是首尾连接的效果(参考播放音乐时系统锁屏界面顶部的音乐标题)。
lineBreakMode 默认为 NSLineBreakByClipping(UILabel 默认值为 NSLineBreakByTruncatingTail)。 textAlignment 暂不支持 NSTextAlignmentJustified 和 NSTextAlignmentNatural。 会忽略 numberOfLines 属性,强制以 1 来展示。
-
控制滚动的速度,1 表示一帧滚动 1pt,10 表示一帧滚动 10pt,默认为 .5,与系统一致。
Declaration
Swift
@IBInspectable @MainActor open var speed: CGFloat
-
当文字第一次显示在界面上,以及重复滚动到开头时都要停顿一下,这个属性控制停顿的时长,默认为 2.5(也是与系统一致),单位为秒。
Declaration
Swift
@IBInspectable @MainActor open var pauseDurationWhenMoveToEdge: TimeInterval
-
用于控制首尾连接的文字之间的间距,默认为 40pt。
Declaration
Swift
@IBInspectable @MainActor open var spacingBetweenHeadToTail: CGFloat
-
用于控制左和右边两端的渐变区域的百分比,默认为 0.2,则是 20% 宽。
Declaration
Swift
@IBInspectable @MainActor open var fadeWidthPercent: CGFloat { get set }
-
自动判断 label 的 frame 是否超出当前的 UIWindow 可视范围,超出则自动停止动画。默认为 YES。
某些场景并无法触发这个自动检测(例如直接调整 label.superview 的 frame 而不是 label 自身的 frame),这种情况暂不处理。
Declaration
Swift
@IBInspectable @MainActor open var automaticallyValidateVisibleFrame: Bool
-
在文字滚动到左右边缘时,是否要显示一个阴影渐变遮罩,默认为 NO。
Declaration
Swift
@IBInspectable @MainActor open var shouldFadeAtEdge: Bool { get set }
-
YES 表示文字会在打开 shouldFadeAtEdge 的情况下,从左边的渐隐区域之后显示,NO 表示不管有没有打开 shouldFadeAtEdge,都会从 label 的边缘开始显示。默认为 NO。
如果文字宽度本身就没超过 label 宽度(也即无需滚动),此时必定不会显示渐隐,则这个属性不会影响文字的显示位置。
Declaration
Swift
@IBInspectable @MainActor open var textStartAfterFade: Bool
-
Undocumented
Declaration
Swift
@MainActor override public init(frame: CGRect)
-
Undocumented
Declaration
Swift
@MainActor public required init?(coder: NSCoder)
-
Undocumented
Declaration
Swift
@MainActor override open func didMoveToWindow()
-
Undocumented
Declaration
Swift
@MainActor override open var text: String? { get set }
-
Undocumented
Declaration
Swift
@MainActor override open var attributedText: NSAttributedString? { get set }
-
Undocumented
Declaration
Swift
@MainActor override open var frame: CGRect { get set }
-
Undocumented
Declaration
Swift
@MainActor override open var numberOfLines: Int { get set }
-
Undocumented
Declaration
Swift
@MainActor override open func drawText(in rect: CGRect)
-
Undocumented
Declaration
Swift
@MainActor override open func layoutSubviews()
-
如果在可复用的 UIView 里使用(例如 UITableViewCell、UICollectionViewCell),由于 UIView 可能重复被使用,因此需要在某些显示/隐藏的时机去手动开启/关闭 label 的动画。如果在普通的 UIView 里使用则无需关注这一部分的代码。 尝试开启 label 的滚动动画 @return 是否成功开启
Declaration
Swift
@MainActor open func requestToStartAnimation() -> Bool
-
尝试停止 label 的滚动动画 @return 是否成功停止
Declaration
Swift
@MainActor open func requestToStopAnimation() -> Bool