Repository navigation
feat: adapt layout for iPhone Duo - #686
Conversation
Fix/issue 581
|
Thanks for the pull request, @Demian-Yushyn! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
On iPhone Duo the window changes size as the device opens, folds and rotates, and the system moves
the status bar and tab bar into a column at the side. The app picked its layout from the device
orientation and idiom, so on Duo the tab content collapsed to zero height, cards slid under the side
column and custom headers touched the top edge. Layout now follows the window's size classes and
safe areas, as Designing for iPhone Duo asks.
Changes
Size classes instead of device checks. New
Core/Core/Extensions/LayoutEnvironment.swift:isHorizontalLayout(compact height) replacesisHorizontalin 43 files,layoutIdiom(regular × regular →
.pad) replaces layout checks ofuserInterfaceIdiomin 16. iPhone and iPadget the same values as before; the Duo inner display gets the iPad layouts.
Tab bar is styled through
UITabBarAppearance. The legacyisTranslucent/backgroundColorbroke the vertical tab bar.
Safe areas. 15 screens no longer ignore the horizontal safe area.
minimumTopSafeArea()keepscustom headers off the top edge when the status bar is on the side.
Screens without a tab bar are centred.
AppNavigationControllerkeeps the side column only onthe main tabs and in compact height. It uses iOS 27.1 API, compiled only with an SDK that has it.
Scene life cycle (
SceneDelegate), which iPhone Duo requires for resizable apps.Course back button stays on screen when the course header collapses (scrolling down, or the
device in landscape) and moves onto the collapsed title row, so it no longer covers the course tabs.
Smaller fixes: the YouTube player keeps playing through rotation and folding, Course details
picks one or two columns from the window shape.
Screenshots
Before → after (outer display)
All screens: outer and inner display, portrait and landscape