swiftui-fadein-text

Apache 2.0 License Package Releases Build Results Swift Version Supported Platforms

什么

一个基于 SwiftUI 的淡入文本动画,适用于 iOS 15 及更高版本。

为什么

在 iOS 18 TextRenderer API 之前,在 SwiftUI 中构建平滑的淡入文本动画非常困难/笨拙。

如何

这种方法使用 AttributedString 在给定的时间内实现平滑的透明度过渡。

它还被设计为高度可定制的,因此您可以引入自己的逻辑来决定如何标记字符串或插值动画。

快速开始

import FadeInText

struct MyView: View {
  let text: String
  var body: some View {
    FadeInText(text: text, color: .black, tokenizer: DefaultTokenizer(), interpolator: LinearInterpolator(config: .defaultValue))
  }
}

动画预览

fade-in-text-demo.mov

FAQ

为什么不直接使用 .opacity(value) 呢?

为了对文本的不同部分使用不同的透明度值进行动画处理,这将需要 iOS 17 的最低目标版本。

  var body: some View {
    var text = Text("")
    for chu in chunk {
      if #available(iOS 17.0, *) {
        text = text + Text(chu).foregroundStyle(.red.opacity(0.5))
      } else {
        // Fallback on earlier versions
      }
    }
    return text
  }

为什么不使用 textrenderer 呢?

它需要 iOS 18 的最低目标版本。