こんなカクカクのメッセージ的な表示。
import SwiftUI
struct Message: View {
var text: String
@State private var showIcon = false
@State private var showText = false
var body: some View {
HStack(spacing: 0) {
if showIcon {
Image(systemName: "heart.fill")
.foregroundStyle(.red)
.font(.title)
.padding()
}
if showText {
Text(text)
.padding(.trailing, 24)
}
}
.clipShape(.capsule)
.background(
.regularMaterial.shadow(.drop(radius: 16)),
in: .capsule
)
.frame(height: 50)
.onAppear {
Task {
showIcon = true
try await Task.sleep(for: .seconds(1))
showText = true
try await Task.sleep(for: .seconds(1))
showText = false
try await Task.sleep(for: .seconds(1))
showIcon = false
}
}
}
}
private struct RefreshPreview: View {
var text: String
@State private var id = false
var body: some View {
Message(text: text)
.id(id)
Button("Refresh") {
id.toggle()
}
.buttonStyle(.borderedProminent)
}
}
#Preview {
RefreshPreview(text: "Hello, world !!!")
.padding()
.frame(maxWidth: .infinity)
}
🤔 アニメーションとトランジションを組み合わせて使う
こんなに雰囲気変わるようです。
これは、組み合わせて使ったほうがいいですね!