SwiftUI 点滅
え、自分で作るしかないの?!
Appleさん公式に追加してくれてもええんやで。 6月のWWDC楽しみにしとるわ。
使い方
点滅させたい View に対して .blinkEffect()
を付加します。
- デフォルト:
.blinkEffect()
- 透明さの範囲を指定:
.blinkEffect(opacity: 0.2...1)
- 点滅の間隔(秒)を指定:
.blinkEffect(interval: 0.5)
Sample.swift
// 点滅する文字 "きらきら"
Text("きらきら")
.blinkEffect()
コピペ用コード
丸々コピペして、プロジェクト内のどこかにおいて下さい。
BlinkEffect.swift
import SwiftUI
struct BlinkEffect: ViewModifier {
@State var isOn: Bool = false
let opacityRange: ClosedRange<Double>
let interval: Double
init(opacity: ClosedRange<Double>, interval: Double) {
self.opacityRange = opacity
self.interval = interval
}
func body(content: Content) -> some View {
content
.opacity(self.isOn ? self.opacityRange.lowerBound : self.opacityRange.upperBound)
.animation(Animation.linear(duration: self.interval).repeatForever())
.onAppear(perform: {
self.isOn = true
})
}
}
extension View {
func blinkEffect(opacity: ClosedRange<Double> = 0.1...1, interval: Double = 0.6) -> some View {
self.modifier(BlinkEffect(opacity: opacity, interval: interval))
}
}
さいごに
もしも点滅したり止めたりしたい時は、
- 同じViewを2つ用意
-
.blinkEffect()
を付けたのと付けてないのに分ける - if文で条件によってViewを出し分ける
みたいな方法でも良ければこのコードでも出来ます。
Author And Source
この問題について(SwiftUI 点滅), 我々は、より多くの情報をここで見つけました https://qiita.com/Rubydog/items/82b670866b3e500fff95著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .