Я хочу анимировать при прокрутке, SwiftUI, iOS 18IOS

Программируем под IOS
Ответить
Anonymous
 Я хочу анимировать при прокрутке, SwiftUI, iOS 18

Сообщение Anonymous »

Я хочу анимировать размытие и непрозрачность, когда стих появляется при прокрутке вверх и исчезает таким же образом. Возможно, я мог бы использовать .scrollTargetLayout() и .scrollTargetVisibilityChange()
struct VersesView: View {
let ChapterNumber: Int
let Language: String

Код: Выделить всё

@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)
}
}
}
struct VerseView: Просмотр {
let verse: Verse
let язык: строка

Код: Выделить всё

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)
}
}

Подробнее здесь: https://stackoverflow.com/questions/793 ... tui-ios-18
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»