一个轻量级的、对 UIKit + AppKit 友好的方式,用于遮罩内容或显示加载状态。 可以把它看作是 SwiftUI 中 'redacted' 修饰符的 iOS + macOS 非 SwiftUI 应用程序版本。
你可以浏览代码,但总而言之,该效果会递归地应用于每个子视图作为CALayer
* (根据你的设置,可以选择使用CAGradientLayer
和CAAnimation
)。当效果关闭时,这些图层应该会自动移除。
(* 注意:“每个子视图”指的是视图层次结构的绝对底部。也就是说,把它想象成一个树数据结构,效果只会应用于叶子节点。)
我没有太多 AppKit 方面的经验,所以它在NSView
上的运行可能不如在UIView
上那样流畅。 如果发现任何问题,请告诉我。
安装该包,可以通过 Swift Package Manager 完成。
决定你想要在哪里调用闪烁效果。 要启动它,你只需要提供你想要应用效果的根视图(记住它是递归的!),以及任何你想要的自定义设置。
例如
Scintillate.kickStart(in: stackView)
将会以默认设置(无动画和默认颜色)启动闪烁效果。
要关闭效果,只需在同一个视图上调用shutDown
Scintillate.shutDown(in: stackView)
可以通过你构建并传递给kickStart
方法的ScintillateSettings
来实现。 它允许你启用动画(默认是关闭的),将遮罩渲染为渐变,并自定义颜色(如果你选择动画和/或将遮罩制作为渐变而不指定辅助颜色,将根据主颜色推断出一个)。