From 24cb18e0fe0d8d240e2d41b2f1482645a801576a Mon Sep 17 00:00:00 2001 From: Admin Date: Sun, 8 Mar 2026 13:42:23 +0500 Subject: [PATCH] iOS: optimize chapters list to render at current chapter instantly - Added custom init to ChaptersListSheet that sets scrollPosition state before view appears - Removed onAppear scroll position update (now set in init) - List renders directly at current chapter position without any scroll animation - Better performance for books with 1000+ chapters (no initial render + animate delay) --- .../LibNovel/Views/Player/PlayerViews.swift | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ios/LibNovel/LibNovel/Views/Player/PlayerViews.swift b/ios/LibNovel/LibNovel/Views/Player/PlayerViews.swift index 6050970..6c07106 100644 --- a/ios/LibNovel/LibNovel/Views/Player/PlayerViews.swift +++ b/ios/LibNovel/LibNovel/Views/Player/PlayerViews.swift @@ -759,6 +759,16 @@ struct ChaptersListSheet: View { let onChapterSelect: (Int) -> Void @Environment(\.dismiss) private var dismiss + + // Initialize scroll position to current chapter immediately (before view appears) + init(chapters: [ChapterIndexBrief], currentChapter: Int, onChapterSelect: @escaping (Int) -> Void) { + self.chapters = chapters + self.currentChapter = currentChapter + self.onChapterSelect = onChapterSelect + // Set initial scroll position state before view renders + _scrollPosition = State(initialValue: currentChapter) + } + @State private var scrollPosition: Int? var body: some View { @@ -815,10 +825,6 @@ struct ChaptersListSheet: View { } .listStyle(.plain) .scrollPosition(id: $scrollPosition, anchor: .center) - .onAppear { - // Set initial scroll position without animation - scrollPosition = currentChapter - } .navigationTitle("Chapters") .navigationBarTitleDisplayMode(.inline) .toolbar {