Skip to content

Add slide animation for adjacent EPUB resource transitions#763

Merged
mickael-menu merged 6 commits intodevelopfrom
fix/epub-animation
Mar 31, 2026
Merged

Add slide animation for adjacent EPUB resource transitions#763
mickael-menu merged 6 commits intodevelopfrom
fix/epub-animation

Conversation

@mickael-menu
Copy link
Copy Markdown
Member

  • Replaces the fade transition with a slide animation when navigating between adjacent EPUB resources. Non-adjacent jumps (e.g. TOC navigation) still use the fade.
  • Takes a UIView snapshot of the current spread before repositioning the scroll view, then animates the snapshot and scroll offset together to produce a smooth slide. This also fixes visual glitches reported in Noticeable screen flicker/flash during page turns between EPUB resources #737 where WKWebView rendering caused a flash mid-transition.

Fixed

Navigator

  • #737 Improved page turn animations in the EPUB navigator.
    • Fixed screen glitches when turning with animations disabled.
    • A slide animation is now used when navigating between adjacent resources.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the EPUB navigator’s page-turn behavior to use a slide transition when moving between adjacent resources (while keeping fade for non-adjacent jumps), aiming to eliminate intermittent flashes/glitches during transitions (issue #737).

Changes:

  • Added snapshot-based slide animation for adjacent resource transitions in PaginationView.
  • Extended internal “go to location” APIs to support an animated flag and threaded it through EPUB spread views and JS scrolling utilities.
  • Updated the Test App to keep a strong reference to DirectionalNavigationAdapter and enable animated transitions.

Reviewed changes

Copilot reviewed 7 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
TestApp/Sources/Reader/Common/VisualReaderViewController.swift Keeps a strong adapter reference and enables animated transitions for directional navigation.
Sources/Navigator/Toolkit/PaginationView.swift Implements snapshot-backed slide transitions for adjacent resources and updates navigation helpers.
Sources/Navigator/EPUB/Scripts/src/utils.js Adds animated plumbing to JS scrolling helpers and introduces a shared scrollTo wrapper.
Sources/Navigator/EPUB/EPUBSpreadView.swift Updates PageView conformance to the new go(to:animated:) API.
Sources/Navigator/EPUB/EPUBReflowableSpreadView.swift Threads animated through pending locations and JS-driven scrolling.
Sources/Navigator/EPUB/EPUBFixedSpreadView.swift Updates go(to:animated:) signature for fixed-layout spreads.
Sources/Navigator/EPUB/Assets/Static/scripts/readium-fixed.js Updates bundled fixed-layout script output to match new JS behavior.
CHANGELOG.md Documents the improved animations and glitch fixes for #737.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Sources/Navigator/EPUB/Scripts/src/utils.js Outdated
Comment thread Sources/Navigator/EPUB/Scripts/src/utils.js
@mickael-menu mickael-menu merged commit 3e8f317 into develop Mar 31, 2026
4 checks passed
@mickael-menu mickael-menu deleted the fix/epub-animation branch March 31, 2026 16:48
darktasevski added a commit to darktasevski/swift-toolkit that referenced this pull request Apr 9, 2026
* upstream/develop:
  Fix decoration positions with paragraph indent (readium#767)
  Replace SwiftSoup with regex-based attribute lookup in Readium CSS injection (readium#742)
  Add support for SVG covers (readium#751)
  Fix race condition when applying EPUB decorations (readium#765)
  Add slide animation for adjacent EPUB resource transitions (readium#763)
  Remove unavailable APIs (readium#759)
  Remove Carthage support (readium#760)
  Improve `DirectionalNavigationAdapter` (readium#757)
  Update JSON usage from `Any` to `JSONValue` (readium#740)
  Fix LCP-enabled TestApp (readium#754)
  Report continuous `totalProgression` in the EPUB locator (readium#753)
  Document device name behavior for LCP registration (readium#752)
  Fix screen flashes during unanimated page turns in the EPUB navigator (readium#750)
  Fix parsing of URI templates (readium#749)
  Fix EPUB contributor role parsing (readium#748)
  Introduce the Readium Swift Playground (readium#746)

# Conflicts:
#	Sources/Navigator/EPUB/Assets/Static/scripts/readium-fixed.js
#	Sources/Navigator/EPUB/Assets/Static/scripts/readium-reflowable.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Noticeable screen flicker/flash during page turns between EPUB resources

2 participants