I need to animate blur and opacity whereas a Verse seems when scrolled up, and disappear the identical method. Perhaps I may use .scrollTargetLayout() and .scrollTargetVisibilityChange()
struct VersesView: View {
let chapterNumber: Int
let language: String
@ObservedObject var versesViewModel: VersesViewModel
@State non-public var visibleVerses = [Verse]()
var physique: some View {
VStack {
if versesViewModel.isLoading {
ProgressView("Loading verses...")
.padding()
} else if let errorMessage = versesViewModel.errorMessage {
VStack(spacing: 16) {
Textual content(errorMessage)
.foregroundColor(Shade(UIColor.label))
.multilineTextAlignment(.middle)
}
.padding()
} else {
// Show verses
VStack(alignment: .main, spacing: 16) {
ForEach(versesViewModel.verses) { verse in
VerseView(verse: verse, language: language)
}
}
}
}
.navigationTitle("Chapter (chapterNumber)")
.navigationBarTitleDisplayMode(.inline)
.onAppear {
versesViewModel.fetchChapterData(chapterNumber: chapterNumber)
}
}
}
struct VerseView: View {
let verse: Verse
let language: String
var physique: some View {
VStack(alignment: .main, spacing: 6) {
if language.lowercased() == "english" {
Textual content("Verse (Funcs.formattedChapterNumber(numb: verse.verse_number))")
.font(.headline)
} else {
Textual content("छंद (Funcs.formattedChapterNumber(numb: verse.verse_number))")
.font(.headline)
}
// Translation Logic Built-in Immediately
Group {
if let translations = verse.translations {
if language.lowercased() == "hindi" {
// Try to seek out the Hindi writer’s translation
if let targetTranslation = translations.first(the place: { $0.author_name == "Swami Tejomayananda" }) {
// Present that writer’s translation
Textual content(targetTranslation.description ?? "")
.font(.physique)
}
// Fallback to the primary out there translation
else if let firstTranslation = translations.first {
Textual content(firstTranslation.description ?? "")
.font(.physique)
} else {
// If no translations can be found, fallback to verse.textual content
Textual content(verse.textual content)
.font(.physique)
}
} else {
// Default to English writer’s translation
if let targetTranslation = translations.first(the place: { $0.author_name == "Swami Sivananda" }) {
// Present that writer’s translation
Textual content(targetTranslation.description ?? "")
.font(.physique)
}
// Fallback to the primary out there translation
else if let firstTranslation = translations.first {
Textual content(firstTranslation.description ?? "")
.font(.physique)
} else {
// If no translations can be found, fallback to verse.textual content
Textual content(verse.textual content)
.font(.physique)
}
}
} else {
// If verse.translations is nil, fallback to verse.textual content
Textual content(verse.textual content)
.font(.physique)
}
}
}
.padding(.backside, 64)
}
}