はじめに
iOS16から自動でウィジェットにアニメーションが付与されるようになりました。
これは便利なこともありますが、用途によってはアニメーションを無くしたい時もあります。
ちょうど無くしたい場面に遭遇したので、やり方を記事にしておきます。
サンプルの実装
struct DemoWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
Text(entry.date.formatted(.dateTime.hour(.twoDigits(amPM: .omitted)).minute().second()))
}
}
実装
extension View {
@ViewBuilder
func contentTransitionIfNeeded() -> some View {
if #available(iOSApplicationExtension 16.0, *) {
self.contentTransition(.identity)
} else {
self
}
}
}
使い方
struct demoWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
Text(entry.date.formatted(.dateTime.hour(.twoDigits(amPM: .omitted)).minute().second()))
.contentTransitionIfNeeded()
}
}
こんな感じでアニメーションが消える
公式ドキュメント
参考記事