Я хочу анимировать размытие и непрозрачность, когда стих появляется при прокрутке вверх и исчезает таким же образом. Возможно, я мог бы использовать .scrollTargetLayout() и .scrollTargetVisibilityChange()
struct VersesView: View {
let ChapterNumber: Int
let Language: String
var body: some View {
VStack(alignment: .leading, spacing: 6) {
if language.lowercased() == "english" {
Text("Verse \(Funcs.formattedChapterNumber(numb: verse.verse_number))")
.font(.headline)
} else {
Text("छंद \(Funcs.formattedChapterNumber(numb: verse.verse_number))")
.font(.headline)
}
// Translation Logic Integrated Directly
Group {
if let translations = verse.translations {
if language.lowercased() == "hindi" {
// Attempt to find the Hindi author’s translation
if let targetTranslation = translations.first(where: { $0.author_name == "Swami Tejomayananda" }) {
// Show that author’s translation
Text(targetTranslation.description ?? "")
.font(.body)
}
// Fallback to the first available translation
else if let firstTranslation = translations.first {
Text(firstTranslation.description ?? "")
.font(.body)
} else {
// If no translations are available, fallback to verse.text
Text(verse.text)
.font(.body)
}
} else {
// Default to English author’s translation
if let targetTranslation = translations.first(where: { $0.author_name == "Swami Sivananda" }) {
// Show that author’s translation
Text(targetTranslation.description ?? "")
.font(.body)
}
// Fallback to the first available translation
else if let firstTranslation = translations.first {
Text(firstTranslation.description ?? "")
.font(.body)
} else {
// If no translations are available, fallback to verse.text
Text(verse.text)
.font(.body)
}
}
} else {
// If verse.translations is nil, fallback to verse.text
Text(verse.text)
.font(.body)
}
}
}
.padding(.bottom, 64)
}
Я хочу анимировать размытие и непрозрачность, когда стих появляется при прокрутке вверх и исчезает таким же образом. Возможно, я мог бы использовать .scrollTargetLayout() и .scrollTargetVisibilityChange() struct VersesView: View { let ChapterNumber: Int let Language: String[code]@ObservedObject var versesViewModel: VersesViewModel @State private var visibleVerses = [Verse]()
var body: some View { VStack { if versesViewModel.isLoading { ProgressView("Loading verses...") .padding() } else if let errorMessage = versesViewModel.errorMessage { VStack(spacing: 16) { Text(errorMessage) .foregroundColor(Color(UIColor.label)) .multilineTextAlignment(.center) } .padding() } else { // Display verses VStack(alignment: .leading, spacing: 16) { ForEach(versesViewModel.verses) { verse in VerseView(verse: verse, language: language) } } } } .navigationTitle("Chapter \(chapterNumber)") .navigationBarTitleDisplayMode(.inline) .onAppear { versesViewModel.fetchChapterData(chapterNumber: chapterNumber) } } [/code] } struct VerseView: Просмотр { let verse: Verse let язык: строка [code]var body: some View { VStack(alignment: .leading, spacing: 6) { if language.lowercased() == "english" { Text("Verse \(Funcs.formattedChapterNumber(numb: verse.verse_number))") .font(.headline) } else { Text("छंद \(Funcs.formattedChapterNumber(numb: verse.verse_number))") .font(.headline) }
// Translation Logic Integrated Directly Group { if let translations = verse.translations { if language.lowercased() == "hindi" { // Attempt to find the Hindi author’s translation if let targetTranslation = translations.first(where: { $0.author_name == "Swami Tejomayananda" }) { // Show that author’s translation Text(targetTranslation.description ?? "") .font(.body) } // Fallback to the first available translation else if let firstTranslation = translations.first { Text(firstTranslation.description ?? "") .font(.body) } else { // If no translations are available, fallback to verse.text Text(verse.text) .font(.body) } } else { // Default to English author’s translation if let targetTranslation = translations.first(where: { $0.author_name == "Swami Sivananda" }) { // Show that author’s translation Text(targetTranslation.description ?? "") .font(.body) } // Fallback to the first available translation else if let firstTranslation = translations.first { Text(firstTranslation.description ?? "") .font(.body) } else { // If no translations are available, fallback to verse.text Text(verse.text) .font(.body) } } } else { // If verse.translations is nil, fallback to verse.text Text(verse.text) .font(.body) } } } .padding(.bottom, 64) } [/code] }