Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix bottom sheet host height change detection #1396

Merged
merged 2 commits into from
Nov 23, 2022

Conversation

lcapkovic
Copy link
Contributor

@lcapkovic lcapkovic commented Nov 23, 2022

Platforms Impacted

  • iOS
  • macOS

Description of changes

Binary change:

Before After
31,681,160 bytes 31,681,352 bytes

Bug

In some cases when sheet was animating while the host view was resizing, we could end up with an outdated sheet position until the next layout pass.

Cause

In the bottom sheet, we detect trait collection, safe area, and root view height changes to auto-complete ongoing animations. This guarantees the animation won't target a frame that is now out of date.

We were missing a class of size changes not captured by viewWillTransitionTo. This becomes an issue on pre-iPhone X devices in some cases where the host height changes while we're hiding. On iPhone X and later in most cases this is luckily covered by the safe area change handler - that's also the reason why we didn't catch it for so long.

Fix

Switch to a catch-all method of height detection - manually doing it in viewDidLayoutSubviews. The logic of how it's handled stays the same - complete animations and cancel gestures.

Verification

No visible change.

Validation:

  • repro bug in test app, validate repro is gone after fix
  • validate bug is fixed in client

Additional sanity:

  • quickly toggle between isHidden true and false
  • change screen orientation during animation
  • change screen orientation during gesture
  • repeat all above for bottom commanding

Pull request checklist

This PR has considered:

  • Light and Dark appearances
  • iOS supported versions (all major versions greater than or equal current target deployment version)
  • VoiceOver and Keyboard Accessibility
  • Internationalization and Right to Left layouts
  • Different resolutions (1x, 2x, 3x)
  • Size classes and window sizes (iPhone vs iPad, notched devices, multitasking, different window sizes, etc)
  • iPad Pointer interaction
  • SwiftUI consumption (validation or new demo scenarios needed)
  • Objective-C exposure (provide it only if needed)
Microsoft Reviewers: Open in CodeFlow

@lcapkovic lcapkovic requested a review from a team as a code owner November 23, 2022 02:33
@anandrajeswaran
Copy link
Contributor

Btw the size difference is surprising. Like shouldn't this reduce size?

@lcapkovic
Copy link
Contributor Author

lcapkovic commented Nov 23, 2022

Btw the size difference is surprising. Like shouldn't this reduce size?

I must've been doing something wrong because after rerunning, I got a much smaller diff.

@lcapkovic lcapkovic enabled auto-merge (squash) November 23, 2022 19:04
@lcapkovic lcapkovic merged commit d211055 into microsoft:main Nov 23, 2022
@lcapkovic lcapkovic deleted the sheetHostResizingFix branch November 23, 2022 19:05
lcapkovic added a commit to lcapkovic/fluentui-apple that referenced this pull request Nov 23, 2022
sophialee0416 added a commit that referenced this pull request Dec 1, 2022
* Drop support for iOS 14 and remove availability checks (#1357)

* Update FluentUI project

* Update FluentUI xcconfig

* Update FluentUI.Demo project

* Update MicrosoftFluentUI.podspec

* Clean up Button

* Clean up CommandBarButton

* Clean up CommandBarButtonGroupView

* Clean up LargeContentViewerModifier

* Clean up Drawer

* Clean up NavigationBar

* Clean up BadgeLabelButton

* Clean up PillButton

* Clean up PillButtonBar

* Clean up SegmentedPillButton

* Clean up SideTabBar

* Clean up TabBarView

* Clean up PillButton v2

* Clean up PillButton v3

* Revert "Update FluentUI project"

This reverts commit 1c97631.

* Update README.md

* Update Package.swift

* Make ShimmerLinesView inherit ShimmerView init (#1362)

* Make ShimmerLinesView inherit ShimmerView init

* move shimmer to fluent2 and add new api to demo

* Bring fluent2-tokens Segmented Control to main (#1363)

* Bring in fluent2-token control

* Add token set to project

* Update dependent controls

* Add colored background for demo

* Update demos

* Update demo order

* Fix whitespace error

* Add demo to show notification bar from top (#1364)

* Update PR Template to include binary change (#1368)

* Fix PersonaListViewDemoController navigation bar transparency bug (#1372)

* Change from DemoController to UIViewController

* Revert "Change from DemoController to UIViewController"

This reverts commit 3b3aeb0.

* Fix bug

* Remove retain cycles (#1374)

* update xcode version to 14.1 for ci (#1371) (#1378)

* Implement the Unread Dot for TabBar and SideTabBar (#1349)

* Implementing the unread dot on TabBarView

* Better naming for variables and events

* Updating SideTabBar demo to show the unread dot

* Pr feedback - reorganizing, renaming, better documentation

* Updating variable names and locations to follow guidance

* Added accessibility string for unread dot

* Switching to using a badge label for the unread dot

* Cleaning up commented out code

* Simplifying logic, using a single view for both the badge and the unreadDot

* PR cleanup

* Add isViewLoaded check (#1379)

* Revert "Drop support for iOS 14 and remove availability checks (#1357)" (#1383)

* Revert "Drop support for iOS 14 and remove availability checks (#1357)"

This reverts commit 4fad398.

* Fix whitespace error

* Defensive fixes for a UIViewPropertyAnimator crash (#1385)

* Latest localized resource files from Touchdown Build (#1388)

Co-authored-by: edjamesmsft <edjamesmsft@users.noreply.github.com>
Co-authored-by: Harrie Shin <hyshin@microsoft.com>

* Fix linting issue (#1393)

* Latest localized resource files from Touchdown Build (#1391)

Co-authored-by: markavitale <markavitale@users.noreply.github.com>
Co-authored-by: Harrie Shin <hyshin@microsoft.com>

* Update demo page cell style (#1389)

* Fix bottom sheet host height change detection (#1396)

* Latest localized resource files from Touchdown Build (#1400)

Co-authored-by: markavitale <markavitale@users.noreply.github.com>

* Latest localized resource files from Touchdown Build (#1401)

Co-authored-by: markavitale <markavitale@users.noreply.github.com>

* Fix PopupMenuItemCell's token sink to not overwrite custom colors (#1398)

* Change TVC updateAppearance to internal

* Fix PopupMenu token sink

* Fix Segmented Control unread dot for icons (#1408)

* Fix unread dot anchor logic

* Update demo to have an unread icon

Co-authored-by: huwilkes <67026548+huwilkes@users.noreply.github.com>
Co-authored-by: Jeanie Huynh <31874971+jeaniehuynh@users.noreply.github.com>
Co-authored-by: Lamine Male <106181067+laminesm@users.noreply.github.com>
Co-authored-by: Mike Schreiber <mischreiber@microsoft.com>
Co-authored-by: Harrie Shin <hyshin@microsoft.com>
Co-authored-by: James Edwards <edjamesmsft@outlook.com>
Co-authored-by: Lukas Capkovic <3610850+lcapkovic@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: edjamesmsft <edjamesmsft@users.noreply.github.com>
Co-authored-by: markavitale <markavitale@users.noreply.github.com>
@edjamesmsft edjamesmsft mentioned this pull request Dec 6, 2022
11 tasks
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.

None yet

3 participants