一个基于 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))
}
}
动画预览
为了对文本的不同部分使用不同的透明度值进行动画处理,这将需要 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
}
它需要 iOS 18 的最低目标版本。